李志伟 3 gadus atpakaļ
vecāks
revīzija
eef8389979
4 mainītis faili ar 274 papildinājumiem un 35 dzēšanām
  1. 120
    35
      lib/pages/order/index.dart
  2. 146
    0
      lib/widgets/RefreshMoreList.dart
  3. 7
    0
      pubspec.lock
  4. 1
    0
      pubspec.yaml

+ 120
- 35
lib/pages/order/index.dart Parādīt failu

@@ -1,10 +1,11 @@
1 1
 import 'package:flutter/material.dart';
2
+import 'package:flutter_easyrefresh/easy_refresh.dart';
2 3
 import 'package:flutter_screenutil/flutter_screenutil.dart';
3 4
 import 'package:get/get.dart';
4 5
 import 'package:worker_client/models/entities/Order.dart';
5 6
 import 'package:worker_client/services/order.dart';
6
-import 'package:worker_client/widgets/MoreList.dart';
7 7
 import 'package:worker_client/widgets/MyCard/index.dart';
8
+import 'package:worker_client/widgets/NullCard.dart';
8 9
 import 'package:worker_client/widgets/layout/BasicPage.dart';
9 10
 
10 11
 class Order extends BasicPage {
@@ -12,8 +13,7 @@ class Order extends BasicPage {
12 13
     tabIndex = 1;
13 14
     naviTitle = '订单列表';
14 15
   }
15
-
16
-  List<OrderModel> orderList = [];
16
+  final orderList = Rx<List<OrderModel>>([]);
17 17
   final q = Rx<String>('');
18 18
 
19 19
   List<String> tabValues = [
@@ -23,9 +23,64 @@ class Order extends BasicPage {
23 23
   ];
24 24
   final currentIndex = Rx<int>(0);
25 25
 
26
+  //测试上拉加载更多
27
+  EasyRefreshController _controller = EasyRefreshController();
28
+  var pageIndex = 1;
29
+  var count = 10;
30
+  int maxSum = 0;
31
+  final params = Rx<Map<String, dynamic>>({'pageNum': 1, 'workStatus': 1});
32
+  final newOrderList = Rx<List<OrderModel>>([]);
33
+  void getNewData() {
34
+    Map<String, dynamic> map = {...params.value};
35
+    pageIndex = 1;
36
+    map['pageNum'] = pageIndex;
37
+    map['workStatus'] = currentIndex.value;
38
+    if (map['workStatus'] == 2) {
39
+      map['workStatus'] = 3;
40
+    }
41
+    map['q'] = q.value;
42
+    params(map);
43
+    getOrderList(params.value).then((value) {
44
+      maxSum = value['total'];
45
+
46
+      List<OrderModel> list = [];
47
+      value['records'].forEach((item) {
48
+        list.add(OrderModel.fromJson(item));
49
+      });
50
+      orderList(list);
51
+      newOrderList(list);
52
+    });
53
+  }
54
+
55
+  void getMoreData() {
56
+    Map<String, dynamic> map = {...params.value};
57
+    pageIndex++;
58
+    map['pageNum'] = pageIndex;
59
+    map['workStatus'] = currentIndex.value;
60
+    if (map['workStatus'] == 2) {
61
+      map['workStatus'] = 3;
62
+    }
63
+    map['q'] = q.value;
64
+    params(map);
65
+    getOrderList(params.value).then((value) {
66
+      maxSum = value['total'];
67
+      List<OrderModel> list = [];
68
+      List<OrderModel> Newlist = [];
69
+      value['records'].forEach((item) {
70
+        list.add(OrderModel.fromJson(item));
71
+      });
72
+      newOrderList.value.addAll(list);
73
+      Newlist.addAll(newOrderList.value);
74
+      orderList(Newlist);
75
+    });
76
+  }
77
+
78
+  int _count = 0;
79
+
26 80
   @override
27 81
   void beforeShow() {
28 82
     super.beforeShow();
83
+    getNewData();
29 84
   }
30 85
 
31 86
   List<OrderModel> GetList(value) {
@@ -34,8 +89,6 @@ class Order extends BasicPage {
34 89
     return list;
35 90
   }
36 91
 
37
-  Map<String, dynamic> map = {'pageNum': 1};
38
-
39 92
   void goDetail(OrderModel item) {
40 93
     Get.toNamed('/orderDetail', arguments: {'id': item.orderId});
41 94
   }
@@ -44,9 +97,7 @@ class Order extends BasicPage {
44 97
   Widget builder(BuildContext context) {
45 98
     return Container(
46 99
       width: 375.w,
47
-      decoration: const BoxDecoration(
48
-        color: Colors.white
49
-      ),
100
+      decoration: const BoxDecoration(color: Colors.white),
50 101
       child: Column(
51 102
         children: [
52 103
           Container(
@@ -79,6 +130,7 @@ class Order extends BasicPage {
79 130
                     ),
80 131
                     onChanged: (e) {
81 132
                       q(e);
133
+                      getNewData();
82 134
                     },
83 135
                   ),
84 136
                 ),
@@ -111,6 +163,7 @@ class Order extends BasicPage {
111 163
                         child: GestureDetector(
112 164
                           onTap: () {
113 165
                             currentIndex(index);
166
+                            getNewData();
114 167
                           },
115 168
                           child: SizedBox(
116 169
                             height: 44.h,
@@ -147,33 +200,65 @@ class Order extends BasicPage {
147 200
                     }).toList(),
148 201
                   ))),
149 202
           Expanded(
150
-            flex:1,
151
-            child: MoreList(
152
-              serves: getOrderList,
153
-              params: map,
154
-              getJson: (BuildContext context, List<dynamic> jsonData) {
155
-                orderList = GetList(jsonData);
156
-                return Container(
157
-                  decoration: const BoxDecoration(color: Colors.white),
158
-                  padding: EdgeInsets.all(15.w),
159
-                  child: Column(
160
-                    children: orderList
161
-                        .map(
162
-                          (item) => MyCard(
163
-                            item: item,
164
-                            job: false,
165
-                            detail: false,
166
-                            goDetail: () {
167
-                              goDetail(item);
168
-                            },
169
-                            buttomText: item.status == 0 ? '开始作业' : '完成作业',
170
-                            onClick: () {},
171
-                          ),
172
-                        )
173
-                        .toList(),
174
-                  ),
175
-                );
176
-              },
203
+            flex: 1,
204
+            child: Obx(() => orderList.value.isNotEmpty
205
+                ? EasyRefresh(
206
+                    controller: _controller,
207
+                    header: ClassicalHeader(
208
+                      infoText: '',
209
+                      refreshedText: '刷新完成',
210
+                      refreshText: '刷新中....',
211
+                      refreshingText: '刷新中....',
212
+                      refreshReadyText: '刷新完毕',
213
+                      noMoreText: '',
214
+                      textColor: const Color(0xff666666),
215
+                    ),
216
+                    footer: ClassicalFooter(
217
+                      infoText: '',
218
+                      loadText: '上拉加载更多',
219
+                      loadingText: '加载中....',
220
+                      loadReadyText: '释放加载',
221
+                      noMoreText: '暂无更多',
222
+                      enableInfiniteLoad: false,
223
+                      textColor: const Color(0xff666666),
224
+                    ),
225
+                    // firstRefresh: true,//是否首次刷新
226
+                    onRefresh: () async {
227
+                      await Future.delayed(const Duration(seconds: 1), () {
228
+                        // print("下拉刷新-----");
229
+                        getNewData();
230
+                        _count = orderList.value.length;
231
+                        // print("最新条数" + _count.toString());
232
+                        _controller.resetLoadState();
233
+                      });
234
+                    },
235
+                    onLoad: () async {
236
+                      await Future.delayed(const Duration(seconds: 1), () {
237
+                        // print("上拉加载-----");
238
+                        getMoreData();
239
+                        _count = orderList.value.length;
240
+                        // print("加载更多条数" + _count.toString());
241
+                        _controller.finishLoad(noMore: _count >= maxSum);
242
+                      });
243
+                    },
244
+                    child: Column(
245
+                      children: orderList.value
246
+                          .map(
247
+                            (item) => MyCard(
248
+                              item: item,
249
+                              job: false,
250
+                              detail: false,
251
+                              onClick: () {},
252
+                              goDetail: () {
253
+                                // goDetail(item);
254
+                              },
255
+                              buttomText: item.status == 0 ? '开始作业' : '完成作业',
256
+                            ),
257
+                          )
258
+                          .toList(),
259
+                    ),
260
+                  )
261
+                : const NullCard(text:'暂无订单'),
177 262
             ),
178 263
           ),
179 264
         ],

+ 146
- 0
lib/widgets/RefreshMoreList.dart Parādīt failu

@@ -0,0 +1,146 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:flutter_easyrefresh/easy_refresh.dart';
3
+import 'package:get/get.dart';
4
+import 'package:worker_client/models/entities/Order.dart';
5
+import 'package:worker_client/services/order.dart';
6
+import 'package:worker_client/widgets/NullCard.dart';
7
+import 'package:worker_client/widgets/MyCard/index.dart';
8
+
9
+class RefreshMoreList extends StatefulWidget {
10
+  const RefreshMoreList({Key? key, required this.cardText, required this.pPrams}) : super(key: key);
11
+  final String cardText;
12
+  final Map<String,dynamic> pPrams;
13
+  @override
14
+  State<RefreshMoreList> createState() => _RefreshMoreList(this.cardText,this.pPrams);
15
+}
16
+
17
+class _RefreshMoreList extends State<RefreshMoreList> {
18
+
19
+  EasyRefreshController _controller = EasyRefreshController();
20
+  final String cardText;
21
+  final Map<String,dynamic> pPrams;
22
+
23
+  _RefreshMoreList(this.cardText, this.pPrams);
24
+
25
+  @override
26
+  void initState() {
27
+    super.initState();
28
+
29
+    getNewData();
30
+  }
31
+
32
+  final orderList = Rx<List<OrderModel>>([]);
33
+  var pageIndex = 1;
34
+  var count = 10;
35
+  int maxSum = 0;
36
+  final params = Rx<Map<String, dynamic>>({'pageNum': 1});
37
+  final newOrderList = Rx<List<OrderModel>>([]);
38
+  void getNewData() {
39
+    Map<String, dynamic> map = {...params.value,...pPrams};
40
+    pageIndex = 1;
41
+    map['pageNum'] = pageIndex;
42
+    // map['workStatus'] = currentIndex.value;
43
+    if (map['workStatus'] == 2) {
44
+      map['workStatus'] = 3;
45
+    }
46
+    // map['q'] = q.value;
47
+    params(map);
48
+    getOrderList(params.value).then((value) {
49
+      maxSum = value['total'];
50
+
51
+      List<OrderModel> list = [];
52
+      value['records'].forEach((item) {
53
+        list.add(OrderModel.fromJson(item));
54
+      });
55
+      orderList(list);
56
+      newOrderList(list);
57
+    });
58
+  }
59
+
60
+  void getMoreData() {
61
+    Map<String, dynamic> map = {...params.value};
62
+    pageIndex++;
63
+    map['pageNum'] = pageIndex;
64
+    // map['workStatus'] = currentIndex.value;
65
+    if (map['workStatus'] == 2) {
66
+      map['workStatus'] = 3;
67
+    }
68
+    // map['q'] = q.value;
69
+    params(map);
70
+    getOrderList(params.value).then((value) {
71
+      maxSum = value['total'];
72
+      List<OrderModel> list = [];
73
+      List<OrderModel> Newlist = [];
74
+      value['records'].forEach((item) {
75
+        list.add(OrderModel.fromJson(item));
76
+      });
77
+      newOrderList.value.addAll(list);
78
+      Newlist.addAll(newOrderList.value);
79
+      orderList(Newlist);
80
+    });
81
+  }
82
+
83
+  int _count = 0;
84
+
85
+  @override
86
+  Widget build(BuildContext context) {
87
+    return Obx(() => orderList.value.isNotEmpty
88
+        ? EasyRefresh(
89
+            controller: _controller,
90
+            header: ClassicalHeader(
91
+              infoText: '',
92
+              refreshedText: '刷新完成',
93
+              refreshText: '刷新中....',
94
+              refreshingText: '刷新中....',
95
+              refreshReadyText: '刷新完毕',
96
+              noMoreText: '',
97
+              textColor: const Color(0xff666666),
98
+            ),
99
+            footer: ClassicalFooter(
100
+              infoText: '',
101
+              loadText: '上拉加载更多',
102
+              loadingText: '加载中....',
103
+              loadReadyText: '释放加载',
104
+              noMoreText: '暂无更多',
105
+              enableInfiniteLoad: false,
106
+              textColor: const Color(0xff666666),
107
+            ),
108
+            // firstRefresh: true,//是否首次刷新
109
+            onRefresh: () async {
110
+              await Future.delayed(const Duration(seconds: 1), () {
111
+                // print("下拉刷新-----");
112
+                getNewData();
113
+                _count = orderList.value.length;
114
+                // print("最新条数" + _count.toString());
115
+                _controller.resetLoadState();
116
+              });
117
+            },
118
+            onLoad: () async {
119
+              await Future.delayed(const Duration(seconds: 1), () {
120
+                // print("上拉加载-----");
121
+                getMoreData();
122
+                _count = orderList.value.length;
123
+                // print("加载更多条数" + _count.toString());
124
+                _controller.finishLoad(noMore: _count >= maxSum);
125
+              });
126
+            },
127
+            child: Column(
128
+              children: orderList.value
129
+                  .map(
130
+                    (item) => MyCard(
131
+                      item: item,
132
+                      job: false,
133
+                      detail: false,
134
+                      onClick: () {},
135
+                      goDetail: () {
136
+                        // goDetail(item);
137
+                      },
138
+                      buttomText: item.status == 0 ? '开始作业' : '完成作业',
139
+                    ),
140
+                  )
141
+                  .toList(),
142
+            ),
143
+          )
144
+        : NullCard(text: cardText));
145
+  }
146
+}

+ 7
- 0
pubspec.lock Parādīt failu

@@ -188,6 +188,13 @@ packages:
188 188
       url: "https://pub.flutter-io.cn"
189 189
     source: hosted
190 190
     version: "3.0.3"
191
+  flutter_easyrefresh:
192
+    dependency: "direct main"
193
+    description:
194
+      name: flutter_easyrefresh
195
+      url: "https://pub.flutter-io.cn"
196
+    source: hosted
197
+    version: "2.2.1"
191 198
   flutter_lints:
192 199
     dependency: "direct dev"
193 200
     description:

+ 1
- 0
pubspec.yaml Parādīt failu

@@ -47,6 +47,7 @@ dependencies:
47 47
   dotted_border: ^2.0.0
48 48
   flutter_picker: ^2.0.3
49 49
   flutter_easyloading: ^3.0.3
50
+  flutter_easyrefresh: ^2.2.1
50 51
 
51 52
 dev_dependencies:
52 53
   flutter_test: