response_model.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * @Author: XianKaiQun
  3. * @Date: 2020-09-25 16:51:44
  4. * @LastEditors: XianKaiQun
  5. * @LastEditTime: 2020-09-25 17:44:26
  6. * @Description:
  7. */
  8. library response_model_library;
  9. import 'package:flutter/foundation.dart';
  10. class ResponseModel<T> {
  11. T? data;
  12. String? code;
  13. String? msg;
  14. late ResponseErrorModel responseJSON;
  15. int? status;
  16. String? statusText;
  17. late Function _dataToJson;
  18. ///[json] 传入接口返回的json数据 res.data
  19. ///
  20. ///[dataFromJson] 传入data的构造函数fromJson
  21. ///
  22. ///[dataToJson] 传入data的构造函数fromJson
  23. ///
  24. ResponseModel({
  25. required Map<String, dynamic> json,
  26. required T Function(dynamic dataJson) from,
  27. required Function(T data) to,
  28. }) {
  29. assert(from != to);
  30. _dataToJson = to;
  31. if (json['data'] != null) {
  32. this.data = from(json['data']);
  33. }
  34. _fromJson(json);
  35. }
  36. void _fromJson(json) {
  37. Map<String, dynamic> map = Map.from(json ?? {});
  38. code = map['code'];
  39. msg = map['msg'];
  40. responseJSON = ResponseErrorModel.fromJson(map["responseJSON"] ?? {});
  41. status = map['status'];
  42. statusText = map['statusText'];
  43. }
  44. Map<String, dynamic> toJson() {
  45. Map<String, dynamic> json = Map<String, dynamic>();
  46. json['code'] = this.code;
  47. json['msg'] = this.msg;
  48. json['responseJSON'] = this.responseJSON.toJson();
  49. json['status'] = this.status;
  50. json['statusText'] = this.statusText;
  51. json['data'] = _dataToJson(this.data);
  52. return json;
  53. }
  54. }
  55. ///接口错误提示
  56. class ResponseErrorModel {
  57. String? code;
  58. String? message;
  59. ResponseErrorModel({
  60. this.code,
  61. this.message,
  62. });
  63. ResponseErrorModel.fromJson(Map<String, dynamic> json) {
  64. code = json['code'];
  65. message = json['message'];
  66. }
  67. Map<String, dynamic> toJson() {
  68. final Map<String, dynamic> json = Map<String, dynamic>();
  69. json['code'] = this.code;
  70. json['message'] = this.message;
  71. return json;
  72. }
  73. }
  74. class ResponsePagingModel<@required T> {
  75. List<T>? list;
  76. num? pageNum;
  77. num? pageSize;
  78. num? pages;
  79. num? total;
  80. late Function _itemToJson;
  81. ///[json] 传入接口返回的data数据
  82. ///
  83. ///[from] 传入List Item的构造函数fromJson
  84. ///
  85. ///[to] 传入List Item的构造函数fromJson
  86. ///
  87. ResponsePagingModel({
  88. required Map<String, dynamic> json,
  89. required T Function(dynamic dataJson) from,
  90. required Function(T data) to,
  91. }) {
  92. _itemToJson = to;
  93. _fromJson(json);
  94. if (json['list'] != null) {
  95. list = json['list'].map<T>((item) => from(item)).toList();
  96. }
  97. }
  98. _fromJson(json) {
  99. Map<String, dynamic> map = Map.from(json ?? {});
  100. pageNum = map['pageNum'];
  101. pageSize = map['pageSize'];
  102. pages = map['pages'];
  103. total = map['total'];
  104. }
  105. Map<String, dynamic> toJson() {
  106. Map<String, dynamic> json = Map<String, dynamic>();
  107. json['list'] = List<dynamic>.from((list ?? []).map((x) => _itemToJson(x)));
  108. json['pageNum'] = this.pageNum;
  109. json['pageSize'] = this.pageSize;
  110. json['pages'] = this.pages;
  111. json['total'] = this.total;
  112. return json;
  113. }
  114. }