import 'package:json_annotation/json_annotation.dart'; import 'base_abstract.dart'; part 'base_result.g.dart'; @JsonSerializable( checked: true, genericArgumentFactories: true, fieldRename: FieldRename.snake, ) class BaseResult extends BaseContainsParametersAbstract { /// 创建失败响应 factory BaseResult.failure({required int code, String? message, T? data}) { return BaseResult(code, message ?? '', data); } /// 创建成功响应 factory BaseResult.success({T? data, String? message, int code = 200}) { return BaseResult(code, message ?? '', data); } BaseResult(this.code, this.message, this.data) { success = successCodes.contains(code); } @JsonKey(name: 'code') final int code; /// 响应消息 @JsonKey(name: 'msg') final String? message; /// 响应数据 @JsonKey(name: 'data') final T? data; /// 是否成功(根据 code 自动计算) @JsonKey(includeFromJson: false, includeToJson: false) late final bool success; /// 成功的响应码列表(可配置) static List successCodes = [200, 0]; factory BaseResult.fromJson( Map json, T Function(dynamic json) fromJsonT, ) => _$BaseResultFromJson(json, fromJsonT); @override Map toJson(Object Function(T value) toJsonT) => _$BaseResultToJson(this, toJsonT); }