swagger_generator_flutter/example/lib/common/base_result.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);
}