http_result.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. class HttpResult<T> {
  2. HttpResult(
  3. {required this.isSuccess,
  4. dynamic dataJson,
  5. List<dynamic>? listJson,
  6. this.errorObj,
  7. this.code = -1,
  8. this.msg,
  9. this.errorMsg}) {
  10. this._dataJson = dataJson;
  11. this._listJson = listJson;
  12. }
  13. //是否成功
  14. bool isSuccess = false;
  15. //成功的数据(Json数据)
  16. dynamic _dataJson;
  17. List<dynamic>? _listJson;
  18. //成功的数据(真正的数据)
  19. T? data;
  20. List<T>? list;
  21. //当前返回对象的code,目前定义的是 code = 0 是成功
  22. int code = -1;
  23. //成功之后的消息
  24. String? msg;
  25. //失败的数据,失败对象
  26. dynamic errorObj;
  27. //失败的数据,失败字符串
  28. String? errorMsg;
  29. /// 以Json对象的方式获取data对象
  30. Map<String, dynamic>? getDataJson() {
  31. if (_dataJson is Map<String, dynamic>) {
  32. return _dataJson as Map<String, dynamic>;
  33. }
  34. return null;
  35. }
  36. /// 以Json对象的方式获取Error对象
  37. Map<String, dynamic>? getErrorJson() {
  38. if (errorObj is Map<String, dynamic>) {
  39. return errorObj as Map<String, dynamic>;
  40. }
  41. return null;
  42. }
  43. /// 以原始对象的方式获取,可以获取到String,Int,bool等基本类型
  44. dynamic getDataDynamic() {
  45. return _dataJson;
  46. }
  47. /// 以数组的方式获取
  48. List<dynamic>? getListJson() {
  49. return _listJson;
  50. }
  51. /// 设置真正的数据对象
  52. void setData(T data) {
  53. this.data = data;
  54. }
  55. void setList(List<T> list) {
  56. this.list = list;
  57. }
  58. /// 基本类型转换为指定的泛型类型
  59. // ignore: avoid_shadowing_type_parameters
  60. HttpResult<T> convert<T>({T? data, List<T>? list}) {
  61. var result = HttpResult<T>(
  62. isSuccess: this.isSuccess,
  63. dataJson: this._dataJson,
  64. listJson: this._listJson,
  65. code: this.code,
  66. msg: this.msg,
  67. errorObj: this.errorObj,
  68. errorMsg: this.errorMsg);
  69. result.data = data;
  70. result.list = list;
  71. return result;
  72. }
  73. }