52 lines
1.1 KiB
Dart
52 lines
1.1 KiB
Dart
class ApiResponse<T> {
|
|
final bool success;
|
|
final T? data;
|
|
final String? message;
|
|
final int? statusCode;
|
|
|
|
// 构造函数
|
|
const ApiResponse({
|
|
required this.success,
|
|
this.data,
|
|
this.message,
|
|
this.statusCode,
|
|
});
|
|
|
|
// 成功响应
|
|
factory ApiResponse.success(T data,
|
|
{String message = 'Success', int? statusCode}) {
|
|
return ApiResponse<T>(
|
|
success: true,
|
|
data: data,
|
|
message: message,
|
|
statusCode: statusCode,
|
|
);
|
|
}
|
|
|
|
// 失败响应
|
|
factory ApiResponse.error(String message, {int? statusCode, T? data}) {
|
|
return ApiResponse<T>(
|
|
success: false,
|
|
message: message,
|
|
statusCode: statusCode,
|
|
data: data, // 可选:返回部分数据(如错误时的缓存数据)
|
|
);
|
|
}
|
|
|
|
// 加载中(可选)
|
|
factory ApiResponse.loading() {
|
|
return ApiResponse<T>(
|
|
success: false,
|
|
message: 'Loading...',
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [success, data, message, statusCode];
|
|
|
|
@override
|
|
String toString() {
|
|
return 'ApiResponse(success: $success, message: $message, data: $data, statusCode: $statusCode)';
|
|
}
|
|
}
|