53 lines
1.3 KiB
Dart
53 lines
1.3 KiB
Dart
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<T> 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<int> successCodes = [200, 0];
|
|
|
|
factory BaseResult.fromJson(
|
|
Map<String, dynamic> json,
|
|
T Function(dynamic json) fromJsonT,
|
|
) =>
|
|
_$BaseResultFromJson(json, fromJsonT);
|
|
|
|
@override
|
|
Map<String, dynamic> toJson(Object Function(T value) toJsonT) =>
|
|
_$BaseResultToJson(this, toJsonT);
|
|
}
|