张延森 před 2 roky
rodič
revize
326bdafd1f

+ 112
- 179
lib/pages/MoreCars/index.dart Zobrazit soubor

@@ -1,20 +1,14 @@
1
-import 'dart:convert';
2
-
3
-import 'package:farmer_client/pages/home/widgets/home/widgets/headers.dart';
4 1
 import 'package:flutter/material.dart';
5
-import 'package:flutter_easyloading/flutter_easyloading.dart';
6
-import 'package:flutter_easyrefresh/easy_refresh.dart';
7 2
 import 'package:flutter_screenutil/flutter_screenutil.dart';
8
-import 'package:fluttertoast/fluttertoast.dart';
3
+import 'package:flutter_easyloading/flutter_easyloading.dart';
9 4
 import 'package:get/get.dart';
10
-
11
-import '../../models/app.dart';
12
-import '../../models/entities/CardListModel.dart';
13
-import '../../models/entities/CardTypeModel.dart';
14
-import '../../services/homeAPI.dart';
15
-import '../../widgets/CarsCard.dart';
16
-import '../../widgets/NullCard.dart';
17
-import '../../widgets/Search.dart';
5
+import 'package:farmer_client/pages/home/widgets/headers.dart';
6
+import 'package:farmer_client/widgets/CarsCard.dart';
7
+import 'package:farmer_client/widgets/RefreshMoreList.dart';
8
+import 'package:farmer_client/models/app.dart';
9
+import 'package:farmer_client/models/entities/CardListModel.dart';
10
+import 'package:farmer_client/models/entities/CardTypeModel.dart';
11
+import 'package:farmer_client/services/homeAPI.dart';
18 12
 
19 13
 class MoreCars extends StatefulWidget {
20 14
   const MoreCars({Key? key}) : super(key: key);
@@ -24,170 +18,124 @@ class MoreCars extends StatefulWidget {
24 18
 
25 19
 class _MoreCarsState extends State<MoreCars> with TickerProviderStateMixin {
26 20
   late TabController _controller;
27
-  late EasyRefreshController _controllerList;
28
-
29
-  final tabText = Rx<List<CardTypeModel>>([]);
30
-  final classId = Rx<List<dynamic>>([]);
31
-  final cardTypeList = Rx<List<CardListModel>>([]);
32
-  final newCardTypeList = Rx<List<CardListModel>>([]);
33
-  var pageIndex = 1; //页数
34
-  var count = 10; //每页10条
35
-  late int maxSum; //最多条数
36
-  String value=''; //最多条数
37
-  int _count = 0;
38 21
   String? location = AppController.t.locationStr;
22
+
23
+  //农机分类列表
24
+  final typeList = Rx<List<CardTypeModel>>([]);
25
+  //顶部的tab栏是否加载完成标识位
39 26
   bool hasTopLoad = false;
27
+  //当前选中项的下标
40 28
   int index = 0;
41
-  String typeId='';
42
-  Map<String, dynamic> params = {'pageNum': 1,'location':AppController.t.locationStr,'typeId':''};
29
+  //当前选中项的类型Id
30
+  String typeId = '';
31
+
32
+  //农机列表
33
+  final machineryList = Rx<List<CardListModel>>([]);
34
+  late int maxSum; //最多条数
35
+  Function? Refresh;
36
+
37
+  final params = Rx<Map<String, dynamic>>({
38
+    'pageNum': 1,
39
+    'location': AppController.t.locationStr ?? '112.087465,32.687507',
40
+    'typeId': ''
41
+  });
43 42
 
44 43
   @override
45 44
   void initState() {
46
-    // TODO: implement initState
47 45
     super.initState();
48
-    _controller = TabController(length: tabText.value.length, vsync: this);
49
-    _controllerList = EasyRefreshController();
50
-
51
-    // _controller.addListener(() {
52
-    //   setState(() => _selectedIndex = _controller.index);
53
-    //   print("liucheng-> ${_controller.indexIsChanging}");
54
-    // });
46
+    _controller = TabController(length: typeList.value.length, vsync: this);
55 47
     _geList();
56
-    getNewData(params);
57
-    // _getAllCarsList();
58 48
   }
59 49
 
60
-  @override
61
-  void dispose() {
62
-    super.dispose();
63
-    _controller.dispose();
64
-    _controllerList.dispose();
65
-  }
66
-
67
-
68
-
69
-  void getNewData(Map? params) {
70
-    pageIndex = 1;
71
-    params!['pageNum'] = pageIndex;
72
-    print(params['pageNum']);
73
-    getMachinery(params).then((value) {
74
-      maxSum = value['total'];
75
-
76
-      List<CardListModel> list = [];
77
-      value['records'].forEach((item) {
78
-        list.add(CardListModel.fromJson(item));
79
-      });
80
-      cardTypeList(list);
81
-      newCardTypeList(list);
82
-      _count = cardTypeList.value.length;
83
-    });
84
-  }
50
+  //获取数据
85 51
   void _geList() {
86
-    getMachineryType().then((value) {
52
+    getMachineryType({'pageSize': 500}).then((value) {
87 53
       EasyLoading.show(status: '数据加载中...');
88
-
89 54
       final list = <CardTypeModel>[];
90
-      List classtypeId = [];
91 55
       List<CardTypeModel> newTabs = [
92 56
         CardTypeModel.fromJson({'name': '全部'})
93 57
       ];
94 58
       value['records'].forEach((item) {
95 59
         list.add(CardTypeModel.fromJson(item));
96 60
       });
61
+      //将全部的选项的农机放到tab栏的第一位
97 62
       list.insertAll(0, newTabs);
98
-      tabText(list);
99
-      tabText().forEach((item) {
100
-        classtypeId.add(item.typeId);
101
-      });
102
-      classId(classtypeId);
103
-
104
-      hasTopLoad = true;
105
-      _controller = TabController(length: tabText.value.length, vsync: this);
106
-      print(hasTopLoad);
63
+      typeList(list);
64
+      _controller = TabController(length: typeList.value.length, vsync: this);
107 65
       EasyLoading.dismiss();
108
-
109
-    });
110
-  }
111
-  void getMoreData(Map? params) {
112
-    pageIndex++;
113
-    params!['pageNum'] = pageIndex;
114
-    print(params['pageNum']);
115
-    searchMachinery(params).then((value) {
116
-      maxSum = value['total'];
117
-      List<CardListModel> list = [];
118
-      List<CardListModel> Newlist = [];
119
-      value['records'].forEach((item) {
120
-        list.add(CardListModel.fromJson(item));
121
-      });
122
-      newCardTypeList.value.addAll(list);
123
-      Newlist.addAll(newCardTypeList.value);
124
-      cardTypeList(Newlist);
125
-      _count = cardTypeList.value.length;
126 66
     });
127 67
   }
68
+
69
+  //切换农机类型
128 70
   void _handleTabChange(i) {
129 71
     index = i;
72
+    Map<String, dynamic> map = {...params.value};
73
+    map['pageNum'] = 1;
130 74
     if (index == 0) {
131
-      Map<String, dynamic> paramss = {'pageNum': 1,'location':location};
132
-      getNewData(paramss);
75
+      typeId = '';
133 76
     } else {
134
-      // final typeId = classId.value[index];
135
-      print('typeId+$typeId');
136
-      typeId=classId.value[index];
137
-      print('typeId+$typeId');
138
-
77
+      typeId = typeList.value[index].typeId.toString();
78
+    }
79
+    map['typeId'] = typeId;
80
+    params(map);
81
+    Refresh!();
82
+  }
139 83
 
140
-      // Map<String, dynamic> params = {'pageNum': 1,'location':location,'typeId':typeId.toString()};
141
-      params['typeId']=classId.value[index];
142
-      getNewData(params);
84
+  List<CardListModel> GetList(value) {
85
+    List<CardListModel> list = [];
86
+    if (value != null)
87
+      value.forEach((item) => {list.add(CardListModel.fromJson(item))});
88
+    return list;
89
+  }
143 90
 
144
-    }
91
+  @override
92
+  void dispose() {
93
+    super.dispose();
94
+    _controller.dispose();
145 95
   }
146 96
 
147 97
   @override
148 98
   Widget build(BuildContext context) {
149 99
     return Scaffold(
150
-        resizeToAvoidBottomInset: true,
151
-        appBar: AppBar(
152
-          centerTitle: true,
153
-          backgroundColor: Colors.transparent,
154
-          foregroundColor: const Color(0xFF333333),
155
-          elevation: 0,
156
-          toolbarHeight: 44.w,
157
-          title: Text(
158
-            '更多',
159
-            style: TextStyle(
160
-                color: const Color(0xFF333333),
161
-                fontWeight: FontWeight.bold,
162
-                fontSize: 17.sp,
163
-                letterSpacing: 2),
164
-          ),
100
+      resizeToAvoidBottomInset: true,
101
+      appBar: AppBar(
102
+        centerTitle: true,
103
+        backgroundColor: Colors.transparent,
104
+        foregroundColor: const Color(0xFF333333),
105
+        elevation: 0,
106
+        toolbarHeight: 44.w,
107
+        title: Text(
108
+          '更多',
109
+          style: TextStyle(
110
+              color: const Color(0xFF333333),
111
+              fontWeight: FontWeight.bold,
112
+              fontSize: 17.sp,
113
+              letterSpacing: 2),
165 114
         ),
166
-        body: SafeArea(
167
-            child: Container(
168
-              alignment: Alignment.center,
169
-              decoration: BoxDecoration(color: Colors.white),
170
-              child: !hasTopLoad
171
-                  ?  Column(
115
+      ),
116
+      body: SafeArea(
117
+        child: Container(
118
+          alignment: Alignment.center,
119
+          decoration: const BoxDecoration(color: Colors.white),
120
+          child: Column(
121
+            children: [
122
+              ListView(
123
+                shrinkWrap: true,
124
+                physics: const NeverScrollableScrollPhysics(),
172 125
                 children: [
173
-                  ListView(
174
-                    shrinkWrap: true,
175
-                    physics: NeverScrollableScrollPhysics(),
176
-                    children: [
177
-                      Container(
178
-                        padding: EdgeInsets.fromLTRB(0, 15, 0, 15),
179
-                        width: 350.w,
180
-                        child: TypeHeader(
181
-                          type: false,
182
-                        ),
183
-                      ),
184
-                      Obx(() => TabBar(
126
+                  Container(
127
+                    margin: EdgeInsets.all(15.w),
128
+                    child: TypeHeader(
129
+                      type: false,
130
+                    ),
131
+                  ),
132
+                  Obx(() => TabBar(
185 133
                         labelStyle: TextStyle(
186 134
                             fontSize: ScreenUtil().setSp(19),
187 135
                             fontWeight: FontWeight.bold),
188 136
                         //选中的样式
189 137
                         unselectedLabelStyle:
190
-                        TextStyle(fontSize: ScreenUtil().setSp(16)),
138
+                            TextStyle(fontSize: ScreenUtil().setSp(16)),
191 139
                         //未选中的样式
192 140
                         controller: _controller,
193 141
                         isScrollable: true,
@@ -198,60 +146,45 @@ class _MoreCarsState extends State<MoreCars> with TickerProviderStateMixin {
198 146
                         //选中文字颜色
199 147
                         unselectedLabelColor: Color(0xffadadad),
200 148
                         // indicatorSize: TabBarIndicatorSize.label, //指示器与文字等宽
201
-                        tabs: tabText.value
149
+                        tabs: typeList.value
202 150
                             .map((e) => Tab(text: e.name.toString()))
203 151
                             .toList(),
204 152
                         onTap: (int i) {
205 153
                           _handleTabChange(i);
206 154
                         },
207 155
                       )),
208
-                    ],
209
-                  ),
210
-                  Expanded(
211
-                    child: _buildListView(context),
212
-                  )
213 156
                 ],
157
+              ),
158
+              Expanded(
159
+                child: _buildListView(context),
214 160
               )
215
-                  : Text('加载中...'),
216
-            )));
161
+            ],
162
+          ),
163
+        ),
164
+      ),
165
+    );
217 166
   }
218
-  Widget _buildListView(BuildContext context) {
219
-    return EasyRefresh(
220
-      controller: _controllerList,
221
-      firstRefresh: true,
222
-      onRefresh: () async {
223
-        await Future.delayed(Duration(seconds: 1), () {
224
-          print("下拉刷新-----");
225
-          // Map<String, dynamic> params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value};
226 167
 
227
-          getNewData(params);
228
-          _controllerList.resetLoadState();
229
-        });
168
+  Widget _buildListView(BuildContext context) {
169
+    return RefreshMoreList(
170
+      pPrams: params,
171
+      cardText: '暂无农机',
172
+      fetch: getMachinery,
173
+      useState: (state) {
174
+        machineryList(GetList(state));
230 175
       },
231
-      onLoad: () async {
232
-        await Future.delayed(Duration(seconds: 1), () {
233
-          if (_count == maxSum) {
234
-            Fluttertoast.showToast(msg: '暂无更多数据哦');
235
-          } else {
236
-            // Map<String, dynamic> params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value};
237
-
238
-            getMoreData(params);
239
-          }
240
-          _controllerList.finishLoad(noMore: _count >= maxSum);
241
-
242
-        });
176
+      builder: ({required BuildContext context, required Function toggle}) {
177
+        Refresh = toggle;
178
+        return Obx(
179
+          () => Column(
180
+            children: machineryList.value
181
+                .map(
182
+                  (item) => CarsCard(item: item),
183
+                )
184
+                .toList(),
185
+          ),
186
+        );
243 187
       },
244
-      child: Obx(
245
-            () => cardTypeList.value.length > 0
246
-            ?
247
-        Column(
248
-          mainAxisSize: MainAxisSize.min,
249
-          children: cardTypeList.value
250
-              .map((item) => CarsCard(item: item))
251
-              .toList(),
252
-        ): NullCard(text: '暂无农机信息!'),
253
-      ),
254 188
     );
255 189
   }
256
-
257 190
 }

+ 187
- 190
lib/pages/OrderConfirmation/index.dart Zobrazit soubor

@@ -38,7 +38,6 @@ class OrderConfirmation extends BasicPage {
38 38
           .then((value) {
39 39
         item(CardInfo.fromJson(value));
40 40
         EasyLoading.dismiss();
41
-
42 41
       });
43 42
 
44 43
       // item(CardInfo.fromJson(Get.arguments['item']));
@@ -67,7 +66,11 @@ class OrderConfirmation extends BasicPage {
67 66
       generateOrder(data).then((value) {
68 67
         orderInfo(OrderInfoModel.fromJson(value));
69 68
         Fluttertoast.showToast(msg: '预约成功');
70
-        Get.offNamed('/orderPageInfo', arguments: {'id': orderInfo().orderId,'title':'待付款','styleColor':Color(0xFF51D4FF)});
69
+        Get.offNamed('/orderPageInfo', arguments: {
70
+          'id': orderInfo().orderId,
71
+          'title': '待付款',
72
+          'styleColor': Color(0xFF51D4FF)
73
+        });
71 74
       });
72 75
       //验证通过提交数据
73 76
     }
@@ -81,141 +84,138 @@ class OrderConfirmation extends BasicPage {
81 84
       child: Form(
82 85
         key: _formKey, //设置globalKey,用于后面获取FormState
83 86
         autovalidateMode: AutovalidateMode.onUserInteraction,
84
-        child:
85
-            Column(
86
-              children: [
87
-                Container(
88
-                  margin: EdgeInsets.fromLTRB(15, 20, 0, 0),
89
-                  alignment: Alignment.topLeft,
90
-                  child: Text(
91
-                    '作业面积/亩',
92
-                    style: TextStyle(
93
-                        color: Color(0xff222222),
94
-                        fontSize: 17.sp,
95
-                        fontWeight: FontWeight.bold),
96
-                  ),
97
-                ),
98
-                TextFormField(
99
-                  autofocus: false,
100
-                  keyboardType: TextInputType.number,
101
-                  controller: _unameController,
102
-                  decoration: const InputDecoration(
103
-                    isCollapsed: true,
104
-                    contentPadding:
87
+        child: Column(
88
+          children: [
89
+            Container(
90
+              margin: EdgeInsets.fromLTRB(15, 20, 0, 0),
91
+              alignment: Alignment.topLeft,
92
+              child: Text(
93
+                '作业面积/亩',
94
+                style: TextStyle(
95
+                    color: Color(0xff222222),
96
+                    fontSize: 17.sp,
97
+                    fontWeight: FontWeight.bold),
98
+              ),
99
+            ),
100
+            TextFormField(
101
+              autofocus: false,
102
+              keyboardType: TextInputType.number,
103
+              controller: _unameController,
104
+              decoration: const InputDecoration(
105
+                isCollapsed: true,
106
+                contentPadding:
105 107
                     EdgeInsets.symmetric(vertical: 8, horizontal: 16),
106
-                    counterText: '', //去掉计数
107
-                    ///   UnderlineInputBorder 只有下边框  默认使用的就是下边框
108
-                    border: UnderlineInputBorder(
109
-                      borderRadius: BorderRadius.all(Radius.circular(10)),
110
-                      borderSide: BorderSide(
111
-                        color: Color(0x30000000),
112
-                        width: 2.0,
113
-                      ),
114
-                    ),
115
-                    floatingLabelBehavior: FloatingLabelBehavior.never,
116
-                    hintText: "请输入具体面积(亩)",
108
+                counterText: '', //去掉计数
109
+                ///   UnderlineInputBorder 只有下边框  默认使用的就是下边框
110
+                border: UnderlineInputBorder(
111
+                  borderRadius: BorderRadius.all(Radius.circular(10)),
112
+                  borderSide: BorderSide(
113
+                    color: Color(0x30000000),
114
+                    width: 2.0,
117 115
                   ),
118
-                  onChanged: (e) {
119
-                    workingArea(int.parse(e));
120
-                  },
121
-                  // 校验用户名
122
-                  validator: (v) {
123
-                    return v!.trim().isNotEmpty ? null : "作业面积/亩不能为空";
124
-                  },
125 116
                 ),
126
-                Container(
127
-                  margin: EdgeInsets.fromLTRB(15, 20, 0, 0),
128
-                  alignment: Alignment.topLeft,
129
-                  child: Text(
130
-                    '作业时间:',
131
-                    style: TextStyle(
132
-                        color: Color(0xff222222),
133
-                        fontSize: 17.sp,
134
-                        fontWeight: FontWeight.bold),
135
-                  ),
136
-                ),
137
-                Container(
138
-                    width: 345.w,
139
-                    padding: EdgeInsets.fromLTRB(0, 15, 0, 15),
140
-                    decoration: const BoxDecoration(
141
-                      border: Border(
142
-                          bottom: BorderSide(width: 1, color: Color(0x20000000)
143
-                            // 0x17000000
117
+                floatingLabelBehavior: FloatingLabelBehavior.never,
118
+                hintText: "请输入具体面积(亩)",
119
+              ),
120
+              onChanged: (e) {
121
+                workingArea(int.parse(e));
122
+              },
123
+              // 校验用户名
124
+              validator: (v) {
125
+                return v!.trim().isNotEmpty ? null : "作业面积/亩不能为空";
126
+              },
127
+            ),
128
+            Container(
129
+              margin: const EdgeInsets.fromLTRB(15, 20, 0, 0),
130
+              alignment: Alignment.topLeft,
131
+              child: Text(
132
+                '作业时间:',
133
+                style: TextStyle(
134
+                    color: Color(0xff222222),
135
+                    fontSize: 17.sp,
136
+                    fontWeight: FontWeight.bold),
137
+              ),
138
+            ),
139
+            Container(
140
+                width: 345.w,
141
+                padding: const EdgeInsets.fromLTRB(0, 15, 0, 15),
142
+                decoration: const BoxDecoration(
143
+                  border: Border(
144
+                      bottom: BorderSide(width: 1, color: Color(0x20000000)
145
+                          // 0x17000000
144 146
                           )),
145
-                    ),
146
-                    child: Row(
147
-                      children: [
148
-                        Image(
149
-                          image: AssetImage('images/icons/timeImage.png'),
150
-                          fit: BoxFit.cover,
151
-                          width: 18.w,
152
-                          height: 18.w,
153
-                        ),
154
-                        Padding(
155
-                          padding: EdgeInsets.fromLTRB(10, 0, 0, 0),
156
-                          child: GestureDetector(
157
-                              onTap: () async {
158
-                                var handleChnage = await showDatePicker(
159
-                                  context: context,
160
-                                  helpText: '请选择作业开始时间',
161
-                                  cancelText: '取消',
162
-                                  confirmText: '确定',
163
-                                  initialDate: selectDate() == null
164
-                                      ? DateTime.now()
165
-                                      : selectDate(),
166
-                                  firstDate: DateTime.now(),
167
-                                  lastDate: DateTime(2030),
168
-                                );
169
-                                selectDate(handleChnage!);
170
-                                print('${selectDate}+');
171
-                              },
172
-                              child: Obx(
173
-                                    () => Text(selectDate == null
174
-                                    ? '请选择日期'
175
-                                    : '${DateFormat("yyyy-MM-dd").format(selectDate())}'),
176
-                              )),
177
-                        )
178
-                      ],
179
-                    )),
180
-                Container(
181
-                  margin: EdgeInsets.fromLTRB(15, 20, 0, 0),
182
-                  alignment: Alignment.topLeft,
183
-                  child: Text(
184
-                    '作业位置:',
185
-                    style: TextStyle(
186
-                        color: Color(0xff222222),
187
-                        fontSize: 17.sp,
188
-                        fontWeight: FontWeight.bold),
189
-                  ),
190 147
                 ),
191
-                Container(
192
-                  width: 345.w,
193
-                  padding: EdgeInsets.fromLTRB(0, 15, 0, 15),
194
-                  decoration: BoxDecoration(
195
-                    border: Border(
196
-                        bottom: BorderSide(width: 1, color: Color(0x20000000)
197
-                          // 0x17000000
148
+                child: Row(
149
+                  children: [
150
+                    Image(
151
+                      image: const AssetImage('images/icons/timeImage.png'),
152
+                      fit: BoxFit.cover,
153
+                      width: 18.w,
154
+                      height: 18.w,
155
+                    ),
156
+                    Padding(
157
+                      padding: const EdgeInsets.fromLTRB(10, 0, 0, 0),
158
+                      child: GestureDetector(
159
+                          onTap: () async {
160
+                            var handleChnage = await showDatePicker(
161
+                              context: context,
162
+                              helpText: '请选择作业开始时间',
163
+                              cancelText: '取消',
164
+                              confirmText: '确定',
165
+                              initialDate: selectDate() ?? DateTime.now(),
166
+                              firstDate: DateTime.now(),
167
+                              lastDate: DateTime(2030),
168
+                            );
169
+                            selectDate(handleChnage!);
170
+                            print('${selectDate}+');
171
+                          },
172
+                          child: Obx(
173
+                            () => Text(selectDate == null
174
+                                ? '请选择日期'
175
+                                : DateFormat("yyyy-MM-dd").format(selectDate())),
176
+                          )),
177
+                    )
178
+                  ],
179
+                )),
180
+            Container(
181
+              margin: const EdgeInsets.fromLTRB(15, 20, 0, 0),
182
+              alignment: Alignment.topLeft,
183
+              child: Text(
184
+                '作业位置:',
185
+                style: TextStyle(
186
+                    color: Color(0xff222222),
187
+                    fontSize: 17.sp,
188
+                    fontWeight: FontWeight.bold),
189
+              ),
190
+            ),
191
+            Container(
192
+              width: 345.w,
193
+              padding: const EdgeInsets.fromLTRB(0, 15, 0, 15),
194
+              decoration: const BoxDecoration(
195
+                border: Border(
196
+                    bottom: BorderSide(width: 1, color: Color(0x20000000)
197
+                        // 0x17000000
198 198
                         )),
199
+              ),
200
+              child: Row(
201
+                mainAxisAlignment: MainAxisAlignment.start,
202
+                children: [
203
+                  Image(
204
+                    image: const AssetImage('images/gpsImgae.png'),
205
+                    fit: BoxFit.cover,
206
+                    width: 14.w,
207
+                    height: 17.h,
199 208
                   ),
200
-                  child: Row(
201
-                    mainAxisAlignment: MainAxisAlignment.start,
202
-                    children: [
203
-                      Image(
204
-                        image: AssetImage('images/gpsImgae.png'),
205
-                        fit: BoxFit.cover,
206
-                        width: 14.w,
207
-                        height: 17.h,
208
-                      ),
209
-                      Padding(
210
-                          padding: EdgeInsets.fromLTRB(10, 0, 0, 0),
211
-                          child: GestureDetector(
212
-                            onTap: () {
213
-                              Get.toNamed('/addressList',
214
-                                  arguments: {'isBack': true});
215
-                            },
216
-                            child: Container(
217
-                              width: 290.w,
218
-                              child: Obx(() => Text(
209
+                  Padding(
210
+                      padding: const EdgeInsets.fromLTRB(10, 0, 0, 0),
211
+                      child: GestureDetector(
212
+                        onTap: () {
213
+                          Get.toNamed('/addressList',
214
+                              arguments: {'isBack': true});
215
+                        },
216
+                        child: SizedBox(
217
+                          width: 290.w,
218
+                          child: Obx(() => Text(
219 219
                                 addressController.address.value.address
220 220
                                     .toString(),
221 221
                                 softWrap: true,
@@ -223,76 +223,73 @@ class OrderConfirmation extends BasicPage {
223 223
                                 textAlign: TextAlign.left,
224 224
                                 overflow: TextOverflow.ellipsis,
225 225
                               )),
226
-                            ),
227
-                          ))
228
-                    ],
226
+                        ),
227
+                      ))
228
+                ],
229
+              ),
230
+            ),
231
+            const Spacer(),
232
+            Container(
233
+              alignment: Alignment.bottomCenter,
234
+              child: SizedBox(
235
+                width: 315.w,
236
+                height: 49.h,
237
+                child: ElevatedButton(
238
+                  onPressed: () {
239
+                    _orderSubmit();
240
+                  },
241
+                  child: const Text(
242
+                    "确定",
243
+                    style: TextStyle(
244
+                        fontSize: 18,
245
+                        color: Colors.white,
246
+                        fontWeight: FontWeight.bold),
229 247
                   ),
230
-                ),
231
-                Spacer(),
232
-                Container(
233
-                  alignment: Alignment.bottomCenter,
234
-                  child: SizedBox(
235
-                    width: 315.w,
236
-                    height: 49.h,
237
-                    child: ElevatedButton(
238
-                      onPressed: () {
239
-                        _orderSubmit();
240
-                      },
241
-                      child: const Text(
242
-                        "确定",
243
-                        style: TextStyle(
244
-                            fontSize: 18,
245
-                            color: Colors.white,
246
-                            fontWeight: FontWeight.bold),
247
-                      ),
248
-                      style: ButtonStyle(
249
-                        elevation: MaterialStateProperty.all(0),
250
-                        backgroundColor:
248
+                  style: ButtonStyle(
249
+                    elevation: MaterialStateProperty.all(0),
250
+                    backgroundColor:
251 251
                         MaterialStateProperty.all(const Color(0xFFFF703B)),
252
-                        shape: MaterialStateProperty.all(
253
-                            const RoundedRectangleBorder(
254
-                                borderRadius:
252
+                    shape: MaterialStateProperty.all(
253
+                        const RoundedRectangleBorder(
254
+                            borderRadius:
255 255
                                 BorderRadius.all(Radius.circular(24.4)))),
256
-                      ),
257
-                    ),
258 256
                   ),
259 257
                 ),
260
-                Container(
261
-                  margin: EdgeInsets.fromLTRB(0, 30.w, 0, 30.w),
262
-                  alignment: Alignment.bottomCenter,
263
-                  child: SizedBox(
264
-                    width: 315.w,
265
-                    height: 49.h,
266
-                    child: ElevatedButton(
267
-                      onPressed: () {
268
-                        Get.back();
269
-                      },
270
-                      child: const Text(
271
-                        "取消",
272
-                        style: TextStyle(
273
-                            fontSize: 18,
274
-                            color: Color(0xFFFF703B),
275
-                            fontWeight: FontWeight.bold),
276
-                      ),
277
-                      style: ButtonStyle(
278
-                        side: MaterialStateProperty.all(
279
-                            BorderSide(width: 1, color: Color(0xFFFF703B))), //边框
280
-                        elevation: MaterialStateProperty.all(0),
281
-                        backgroundColor: MaterialStateProperty.all(Colors.white),
282
-                        shape: MaterialStateProperty.all(
283
-                          RoundedRectangleBorder(
284
-                              borderRadius:
258
+              ),
259
+            ),
260
+            Container(
261
+              margin: EdgeInsets.fromLTRB(0, 30.w, 0, 30.w),
262
+              alignment: Alignment.bottomCenter,
263
+              child: SizedBox(
264
+                width: 315.w,
265
+                height: 49.h,
266
+                child: ElevatedButton(
267
+                  onPressed: () {
268
+                    Get.back();
269
+                  },
270
+                  child: const Text(
271
+                    "取消",
272
+                    style: TextStyle(
273
+                        fontSize: 18,
274
+                        color: Color(0xFFFF703B),
275
+                        fontWeight: FontWeight.bold),
276
+                  ),
277
+                  style: ButtonStyle(
278
+                    side: MaterialStateProperty.all(
279
+                        const BorderSide(width: 1, color: Color(0xFFFF703B))), //边框
280
+                    elevation: MaterialStateProperty.all(0),
281
+                    backgroundColor: MaterialStateProperty.all(Colors.white),
282
+                    shape: MaterialStateProperty.all(
283
+                      const RoundedRectangleBorder(
284
+                          borderRadius:
285 285
                               BorderRadius.all(Radius.circular(24.4))),
286
-                        ),
287
-                      ),
288 286
                     ),
289 287
                   ),
290 288
                 ),
291
-              ],
289
+              ),
292 290
             ),
293
-
294
-
295
-
291
+          ],
292
+        ),
296 293
       ),
297 294
     );
298 295
   }

+ 60
- 68
lib/pages/home/index.dart Zobrazit soubor

@@ -1,14 +1,14 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:get/get.dart';
3
+import 'package:flutter_screenutil/flutter_screenutil.dart';
1 4
 import 'package:farmer_client/models/app.dart';
2 5
 import 'package:farmer_client/models/entities/CardListModel.dart';
3 6
 import 'package:farmer_client/services/homeAPI.dart';
4 7
 import 'package:farmer_client/widgets/CarsCard.dart';
5 8
 import 'package:farmer_client/widgets/RefreshMoreList.dart';
6 9
 import 'package:farmer_client/widgets/layout/BasicPage.dart';
7
-import 'package:flutter/material.dart';
8
-import '../MoreCars/index.dart';
9
-import 'package:farmer_client/pages/home/widgets/home/widgets/searchBannerHeader.dart';
10
-import 'package:flutter_screenutil/flutter_screenutil.dart';
11
-import 'package:get/get.dart';
10
+import 'package:farmer_client/pages/home/widgets/searchBannerHeader.dart';
11
+import 'package:farmer_client/pages/MoreCars/index.dart';
12 12
 
13 13
 class Home extends BasicPage {
14 14
   Home({Key? key}) : super(key: key) {
@@ -16,13 +16,7 @@ class Home extends BasicPage {
16 16
     naviTitle = '首页';
17 17
   }
18 18
 
19
-  String? location = AppController.t.locationStr;
20
-  final machineryLists = Rx<List<CardListModel>>([]);
21
-
22
-  final newMachineryLists = Rx<List<CardListModel>>([]);
23
-  var pageIndex = 1; //页数
24
-  var count = 10; //每页10条
25
-  late int maxSum; //最多条数
19
+  final machineryList = Rx<List<CardListModel>>([]);
26 20
   final params = Rx<Map<String, dynamic>>({
27 21
     'pageSize': 10,
28 22
     'location': AppController.t.locationStr ?? '112.087465,32.687507'
@@ -40,67 +34,65 @@ class Home extends BasicPage {
40 34
     return Container(
41 35
       decoration: const BoxDecoration(color: Colors.white),
42 36
       padding: EdgeInsets.fromLTRB(15.w, 5.w, 15.w, 0),
43
-      child: Column(
44
-        children: [
45
-          const searchBannerHeader(),
46
-          Row(
47
-            mainAxisAlignment: MainAxisAlignment.spaceBetween,
37
+      child: RefreshMoreList(
38
+        pPrams: params,
39
+        cardText: '暂无农机',
40
+        fetch: getMachinery,
41
+        isHome: true,
42
+        useState: (state) {
43
+          machineryList(GetList(state));
44
+        },
45
+        builder: ({required BuildContext context, required Function toggle}) {
46
+          Refresh = toggle;
47
+          return Column(
48 48
             children: [
49
-              Container(
50
-                padding: EdgeInsets.symmetric(vertical: 15.h),
51
-                child: Row(
52
-                  children: [
53
-                    Padding(
54
-                      padding: const EdgeInsets.only(right: 8),
55
-                      child: Image(
56
-                        image:
57
-                            const AssetImage('images/icons/carsListImga.png'),
58
-                        fit: BoxFit.cover,
59
-                        width: 20.w,
60
-                      ),
49
+              const searchBannerHeader(),
50
+              Row(
51
+                mainAxisAlignment: MainAxisAlignment.spaceBetween,
52
+                children: [
53
+                  Container(
54
+                    padding: EdgeInsets.symmetric(vertical: 15.h),
55
+                    child: Row(
56
+                      children: [
57
+                        Padding(
58
+                          padding: const EdgeInsets.only(right: 8),
59
+                          child: Image(
60
+                            image: const AssetImage(
61
+                                'images/icons/carsListImga.png'),
62
+                            fit: BoxFit.cover,
63
+                            width: 20.w,
64
+                          ),
65
+                        ),
66
+                        Text(
67
+                          '农机列表',
68
+                          style: TextStyle(
69
+                              color: const Color(0xff222222),
70
+                              fontSize: 20.sp,
71
+                              fontWeight: FontWeight.bold),
72
+                        )
73
+                      ],
61 74
                     ),
62
-                    Text(
63
-                      '农机列表',
64
-                      style: TextStyle(
65
-                          color: const Color(0xff222222),
66
-                          fontSize: 20.sp,
67
-                          fontWeight: FontWeight.bold),
68
-                    )
69
-                  ],
75
+                  ),
76
+                  GestureDetector(
77
+                    child: const Text('更多 >>'),
78
+                    onTap: () {
79
+                      Get.to(const MoreCars());
80
+                    },
81
+                  )
82
+                ],
83
+              ),
84
+              Obx(
85
+                () => Column(
86
+                  children: machineryList.value
87
+                      .map(
88
+                        (item) => CarsCard(item: item),
89
+                      )
90
+                      .toList(),
70 91
                 ),
71 92
               ),
72
-              GestureDetector(
73
-                child: const Text('更多 >>'),
74
-                onTap: () {
75
-                  Get.to(const MoreCars());
76
-                },
77
-              )
78 93
             ],
79
-          ),
80
-          Expanded(
81
-            child: RefreshMoreList(
82
-              pPrams: params,
83
-              cardText: '暂无订单',
84
-              fetch: getMachinery,
85
-              useState: (state) {
86
-                machineryLists(GetList(state));
87
-              },
88
-              builder: (
89
-                  {required BuildContext context, required Function toggle}) {
90
-                Refresh = toggle;
91
-                return Obx(
92
-                  () => Column(
93
-                    children: machineryLists.value
94
-                        .map(
95
-                          (item) => CarsCard(item: item),
96
-                        )
97
-                        .toList(),
98
-                  ),
99
-                );
100
-              },
101
-            ),
102
-          ),
103
-        ],
94
+          );
95
+        },
104 96
       ),
105 97
     );
106 98
   }

lib/pages/home/widgets/home/widgets/headers.dart → lib/pages/home/widgets/headers.dart Zobrazit soubor


lib/pages/home/widgets/home/widgets/searchBannerHeader.dart → lib/pages/home/widgets/searchBannerHeader.dart Zobrazit soubor


+ 30
- 114
lib/pages/infomation/index.dart Zobrazit soubor

@@ -1,132 +1,48 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:get/get.dart';
1 3
 import 'package:farmer_client/pages/infomation/widgets/Information/index.dart';
4
+import 'package:farmer_client/widgets/RefreshMoreList.dart';
2 5
 import 'package:farmer_client/widgets/layout/BasicPage.dart';
3
-import 'package:flutter/material.dart';
4
-import 'package:flutter_easyloading/flutter_easyloading.dart';
5
-import 'package:flutter_easyrefresh/easy_refresh.dart';
6
-import 'package:fluttertoast/fluttertoast.dart';
7
-import 'package:get/get_rx/src/rx_types/rx_types.dart';
8
-import 'package:get/get_state_manager/get_state_manager.dart';
9
-
10
-import '../../models/entities/NewsInformationModel.dart';
11
-import '../../services/news.dart';
12
-import '../../widgets/NullCard.dart';
6
+import 'package:farmer_client/models/entities/NewsInformationModel.dart';
7
+import 'package:farmer_client/services/news.dart';
13 8
 
14 9
 class Infomation extends BasicPage {
15
-  // List<NewsInformationModel> newsListItem=[];
16
-
17 10
   Infomation({Key? key}) : super(key: key) {
18 11
     tabIndex = 2;
19 12
     naviTitle = '资讯';
20 13
   }
21
-  EasyRefreshController _controller = EasyRefreshController();
22 14
 
23
-  final newsListItem = Rx<List<NewsInformationModel>>([]);
24
-  final addNewOrderList = Rx<List<NewsInformationModel>>([]);
25
-  var pageIndex = 1; //页数
26
-  var count = 10; //每页10条
27
-  late int maxSum; //最多条数
28
-  int _count = 0;
29
-  Map<String, dynamic> params = {'pageNum': 1};
30
-  @override
31
-  void beforeShow() {
32
-    // TODO: implement beforeShow
33
-    super.beforeShow();
34
-    // EasyLoading.show(status: '数据加载中...');
35
-    //
36
-    // getNewsList(params).then((value) {
37
-    //   final list = <NewsInformationModel>[];
38
-    //
39
-    //   value['records'].forEach((item) {
40
-    //     list.add(NewsInformationModel.fromJson(item));
41
-    //     print('newsListItem');
42
-    //
43
-    //     print(newsListItem.value);
44
-    //   });
45
-    //   newsListItem.value = list;
46
-    //   EasyLoading.dismiss();
47
-    //
48
-    // });
15
+  final newsList = Rx<List<NewsInformationModel>>([]);
16
+  final params = Rx<Map<String, dynamic>>({'pageSize': 10});
17
+  Function? Refresh;
18
+  List<NewsInformationModel> GetList(value) {
19
+    List<NewsInformationModel> list = [];
20
+    if (value != null)
21
+      value.forEach((item) => {list.add(NewsInformationModel.fromJson(item))});
22
+    return list;
49 23
   }
50 24
 
51
-  void getNewData() {
52
-    pageIndex = 1;
53
-    params['pageNum'] = pageIndex;
54
-    print(params['pageNum']);
55
-    getNewsList(params).then((value) {
56
-      maxSum = value['total'];
57
-
58
-      List<NewsInformationModel> list = [];
59
-      value['records'].forEach((item) {
60
-        list.add(NewsInformationModel.fromJson(item));
61
-      });
62
-      newsListItem(list);
63
-      addNewOrderList(list);
64
-      _count = newsListItem.value.length;
65
-    });
66
-  }
67
-
68
-  void getMoreData() {
69
-    pageIndex++;
70
-    params['pageNum'] = pageIndex;
71
-    print(params['pageNum']);
72
-    getNewsList(params).then((value) {
73
-      maxSum = value['total'];
74
-      List<NewsInformationModel> list = [];
75
-      List<NewsInformationModel> Newlist = [];
76
-      value['records'].forEach((item) {
77
-        list.add(NewsInformationModel.fromJson(item));
78
-      });
79
-      addNewOrderList.value.addAll(list);
80
-      Newlist.addAll(addNewOrderList.value);
81
-      newsListItem(Newlist);
82
-      _count = newsListItem.value.length;
83
-    });
84
-  }
85
-
86
-
87
-
88 25
   @override
89 26
   Widget builder(BuildContext context) {
90
-    return EasyRefresh(
91
-      controller: _controller,
92
-      firstRefresh: true,
93
-      onRefresh: () async {
94
-        await Future.delayed(Duration(seconds: 1), () {
95
-          print("下拉刷新-----");
96
-          getNewData();
97
-          _controller.resetLoadState();
98
-        });
27
+    return RefreshMoreList(
28
+      pPrams: params,
29
+      cardText: '暂无资讯',
30
+      fetch: getNewsList,
31
+      useState: (state) {
32
+        newsList(GetList(state));
99 33
       },
100
-      onLoad: () async {
101
-        await Future.delayed(Duration(seconds: 1), () {
102
-          if (_count == maxSum) {
103
-            Fluttertoast.showToast(msg: '暂无更多资讯哦');
104
-          } else {
105
-            getMoreData();
106
-          }
107
-          _controller.finishLoad(noMore: _count >= maxSum);
108
-
109
-        });
34
+      builder: ({required BuildContext context, required Function toggle}) {
35
+        Refresh = toggle;
36
+        return Obx(
37
+          () => Column(
38
+            children: newsList.value
39
+                .map(
40
+                  (item) => Information(item: item),
41
+                )
42
+                .toList(),
43
+          ),
44
+        );
110 45
       },
111
-      child: Obx(
112
-            () => newsListItem.value.length > 0
113
-            ?
114
-        Column(
115
-          mainAxisSize: MainAxisSize.min,
116
-          children: newsListItem.value
117
-              .map((item) => Information(item: item))
118
-              .toList(),
119
-        ): NullCard(text: '暂无资讯!'),
120
-      ),
121 46
     );
122
-      // Container(
123
-      //   child: Obx(() => Column(
124
-      //         mainAxisSize: MainAxisSize.min,
125
-      //         children: newsListItem.value
126
-      //             .map((item) => Information(
127
-      //                   item: item,
128
-      //                 ))
129
-      //             .toList(),
130
-      //       )));
131 47
   }
132 48
 }

+ 35
- 91
lib/pages/order/index.dart Zobrazit soubor

@@ -1,113 +1,57 @@
1 1
 import 'package:farmer_client/pages/order/widgets/index.dart';
2
-import 'package:farmer_client/widgets/layout/BasicPage.dart';
3 2
 import 'package:flutter/material.dart';
4
-import 'package:flutter_easyrefresh/easy_refresh.dart';
5
-import 'package:farmer_client/widgets/NullCard.dart';
6
-import 'package:fluttertoast/fluttertoast.dart';
7 3
 import 'package:get/get.dart';
8 4
 import 'package:get/get_rx/src/rx_types/rx_types.dart';
9
-import '../../models/entities/OrderInfoModel.dart';
10
-import '../../services/orderAPI.dart';
11
-import '../../widgets/OrderListCard.dart';
5
+import 'package:farmer_client/models/entities/OrderInfoModel.dart';
6
+import 'package:farmer_client/services/orderAPI.dart';
7
+import 'package:farmer_client/widgets/OrderListCard.dart';
8
+import 'package:farmer_client/widgets/layout/BasicPage.dart';
9
+import 'package:farmer_client/widgets/RefreshMoreList.dart';
12 10
 
13 11
 class OrderPage extends BasicPage {
14 12
   OrderPage({Key? key}) : super(key: key) {
15 13
     tabIndex = 1;
16 14
     naviTitle = '订单';
17 15
   }
18
-  EasyRefreshController _controller = EasyRefreshController();
19 16
 
20
-  final orderListItem = Rx<List<OrderInfoModel>>([]);
21
-  final newOrderList = Rx<List<OrderInfoModel>>([]);
22
-  var pageIndex = 1; //页数
23
-  var count = 10; //每页10条
24
-  late int maxSum; //最多条数
25
-  int _count = 0;
26
-  Map<String, dynamic> params = {'pageNum': 1,'mine':true};
27
-
28
-  void getNewData() {
29
-    pageIndex = 1;
30
-    params['pageNum'] = pageIndex;
31
-    print(params['pageNum']);
32
-    getOrderList(params).then((value) {
33
-      maxSum = value['total'];
34
-      List<OrderInfoModel> list = [];
35
-      value['records'].forEach((item) {
36
-        list.add(OrderInfoModel.fromJson(item));
37
-      });
38
-      orderListItem(list);
39
-      newOrderList(list);
40
-      _count = orderListItem.value.length;
41
-    });
17
+  final orderList = Rx<List<OrderInfoModel>>([]);
18
+  final params = Rx<Map<String, dynamic>>({'pageSize': 10, 'mine': true});
19
+  Function? Refresh;
20
+  List<OrderInfoModel> GetList(value) {
21
+    List<OrderInfoModel> list = [];
22
+    if (value != null)
23
+      value.forEach((item) => {list.add(OrderInfoModel.fromJson(item))});
24
+    return list;
42 25
   }
43 26
 
44
-  void getMoreData() {
45
-    pageIndex++;
46
-    params['pageNum'] = pageIndex;
47
-    print(params['pageNum']);
48
-    getOrderList(params).then((value) {
49
-      maxSum = value['total'];
50
-      List<OrderInfoModel> list = [];
51
-      List<OrderInfoModel> Newlist = [];
52
-      value['records'].forEach((item) {
53
-        list.add(OrderInfoModel.fromJson(item));
54
-      });
55
-      newOrderList.value.addAll(list);
56
-      Newlist.addAll(newOrderList.value);
57
-      orderListItem(Newlist);
58
-      _count = orderListItem.value.length;
59
-    });
60
-  }
61
-
62
-@override
63
-  void beforeShow() {
64
-    // TODO: implement beforeShow
65
-    super.beforeShow();
66
-    // getNewData();
67
-  }
68 27
   @override
69 28
   Widget builder(BuildContext context) {
70 29
     return Column(
71
-      children:  [
30
+      children: [
72 31
         const OrderHead(),
73 32
         Expanded(
74
-          child:
75
-          (
76
-    EasyRefresh(
77
-      controller: _controller,
78
-      firstRefresh: true,
79
-      header: ClassicalHeader(refreshingText:'刷新中...',refreshedText: '刷新成功',refreshFailedText:'异常'),
80
-      onRefresh: () async {
81
-        await Future.delayed(const Duration(seconds: 1), () {
82
-          print("下拉刷新-----");
83
-          getNewData();
84
-          _controller.resetLoadState();
85
-        });
86
-      },
87
-      onLoad: () async {
88
-        await Future.delayed(const Duration(seconds: 1), () {
89
-          if (_count == maxSum) {
90
-            Fluttertoast.showToast(msg: '暂无更多数据哦');
91
-          } else {
92
-            getMoreData();
93
-          }
94
-          _controller.finishLoad(noMore: _count >= maxSum);
95
-
96
-        });
97
-      },
98
-      child: Obx(
99
-            () => orderListItem.value.isNotEmpty
100
-            ?
101
-        Column(
102
-          mainAxisSize: MainAxisSize.min,
103
-          children: orderListItem.value
104
-              .map((item) => OrderListCard(item: item))
105
-              .toList(),
106
-        ): const NullCard(text: '您还没有新的订单!'),
107
-      ),
108
-    )
33
+          child: RefreshMoreList(
34
+            pPrams: params,
35
+            cardText: '您还没有新的订单',
36
+            fetch: getOrderList,
37
+            useState: (state) {
38
+              orderList(GetList(state));
39
+            },
40
+            builder: (
41
+                {required BuildContext context, required Function toggle}) {
42
+              Refresh = toggle;
43
+              return Obx(
44
+                () => Column(
45
+                  children: orderList.value
46
+                      .map(
47
+                        (item) => OrderListCard(item: item),
48
+                      )
49
+                      .toList(),
50
+                ),
51
+              );
52
+            },
109 53
           ),
110
-  )
54
+        ),
111 55
       ],
112 56
     );
113 57
   }

+ 84
- 152
lib/pages/search/index.dart Zobrazit soubor

@@ -1,170 +1,102 @@
1
-import 'dart:async';
2
-
3
-import 'package:farmer_client/widgets/layout/BasicPage.dart';
4 1
 import 'package:flutter/material.dart';
5
-import 'package:flutter_easyloading/flutter_easyloading.dart';
6
-import 'package:flutter_easyrefresh/easy_refresh.dart';
7
-import 'package:flutter_screenutil/flutter_screenutil.dart';
8
-import 'package:fluttertoast/fluttertoast.dart';
9 2
 import 'package:get/get.dart';
10
-import 'package:get/get_rx/src/rx_types/rx_types.dart';
11
-
12
-import '../../models/app.dart';
13
-import '../../models/entities/CardListModel.dart';
14
-import '../../services/homeAPI.dart';
15
-import '../../widgets/CarsCard.dart';
16
-import '../../widgets/NullCard.dart';
17
-import 'dart:async';
3
+import 'package:flutter_screenutil/flutter_screenutil.dart';
4
+import 'package:farmer_client/widgets/CarsCard.dart';
5
+import 'package:farmer_client/widgets/RefreshMoreList.dart';
6
+import 'package:farmer_client/widgets/layout/BasicPage.dart';
7
+import 'package:farmer_client/models/app.dart';
8
+import 'package:farmer_client/models/entities/CardListModel.dart';
9
+import 'package:farmer_client/services/homeAPI.dart';
18 10
 
19 11
 class SearchPage extends BasicPage {
20
-  EasyRefreshController _controller = EasyRefreshController();
21
-
22
-  final cardSearchList = Rx<List<CardListModel>>([]);
23
-  final newCardSearchList = Rx<List<CardListModel>>([]);
24
-  var pageIndex = 1; //页数
25
-  var count = 10; //每页10条
26
-  late int maxSum; //最多条数
27
-   String value=''; //最多条数
28
-  int _count = 0;
12
+  final machineryList = Rx<List<CardListModel>>([]);
13
+  final params = Rx<Map<String, dynamic>>(
14
+      {'location': AppController.t.locationStr ?? '112.087465,32.687507'});
15
+  Function? Refresh;
16
+  List<CardListModel> GetList(value) {
17
+    List<CardListModel> list = [];
18
+    if (value != null)
19
+      value.forEach((item) => {list.add(CardListModel.fromJson(item))});
20
+    return list;
21
+  }
29 22
 
30 23
   var location = AppController.t.locationStr;
31
-
32 24
   void _onChange(String value) {
33
-    Map<String, dynamic> params = {'pageNum': 1,'location':AppController.t.locationStr,'q':value};
34
-
35
-    getNewData(params);
36
-    // searchMachinery(params).then((value) {
37
-    //   EasyLoading.show(status: '数据加载中...');
38
-    //   final list = <CardListModel>[];
39
-    //   value['records'].forEach((item) {
40
-    //     list.add(CardListModel.fromJson(item));
41
-    //   });
42
-    //   cardSearchList(list);
43
-    //   newCardSearchList(list);
44
-    //   EasyLoading.dismiss();
45
-    //
46
-    // });
47
-  }
48
-
49
-
50
-  void getNewData(Map? params) {
51
-    pageIndex = 1;
52
-    params!['pageNum'] = pageIndex;
53
-    print(params['pageNum']);
54
-    searchMachinery(params).then((value) {
55
-      maxSum = value['total'];
56
-
57
-      List<CardListModel> list = [];
58
-      value['records'].forEach((item) {
59
-        list.add(CardListModel.fromJson(item));
60
-      });
61
-      cardSearchList(list);
62
-      newCardSearchList(list);
63
-      _count = cardSearchList.value.length;
64
-    });
65
-  }
66
-
67
-  void getMoreData(Map? params) {
68
-    pageIndex++;
69
-    params!['pageNum'] = pageIndex;
70
-    print(params['pageNum']);
71
-    searchMachinery(params).then((value) {
72
-      maxSum = value['total'];
73
-      List<CardListModel> list = [];
74
-      List<CardListModel> Newlist = [];
75
-      value['records'].forEach((item) {
76
-        list.add(CardListModel.fromJson(item));
77
-      });
78
-      newCardSearchList.value.addAll(list);
79
-      Newlist.addAll(newCardSearchList.value);
80
-      cardSearchList(Newlist);
81
-      _count = cardSearchList.value.length;
82
-    });
25
+    Map<String, dynamic> map = {...params.value};
26
+    map['q'] = value;
27
+    map['pageNum'] = 1;
28
+    params(map);
29
+    Refresh!();
83 30
   }
84 31
 
85 32
   @override
86 33
   Widget builder(BuildContext context) {
87 34
     naviTitle = '搜索';
88
-    return Container(
89
-        child: Column(children: [
90
-      Container(
91
-        width: 345.w,
92
-        height: 34.h,
93
-        margin: EdgeInsets.symmetric(vertical: 15.h, horizontal: 15.w),
94
-        padding: EdgeInsets.symmetric(vertical: 0, horizontal: 10.w),
95
-        decoration: BoxDecoration(
96
-            color: Color(0xFFf8f8f8),
97
-            borderRadius: BorderRadius.all(Radius.circular(17.w))),
98
-        child: Row(
99
-          mainAxisAlignment: MainAxisAlignment.center,
100
-          children: [
101
-            Image.asset(
102
-              'images/icons/search.png',
103
-              width: 15.w,
104
-              height: 15.w,
35
+    return Column(
36
+      children: [
37
+        Container(
38
+          width: 345.w,
39
+          height: 34.h,
40
+          margin: EdgeInsets.symmetric(vertical: 15.h, horizontal: 15.w),
41
+          padding: EdgeInsets.symmetric(vertical: 0, horizontal: 10.w),
42
+          decoration: BoxDecoration(
43
+            color: const Color(0xFFf8f8f8),
44
+            borderRadius: BorderRadius.all(
45
+              Radius.circular(17.w),
105 46
             ),
106
-            Container(
107
-              width: 300.w,
108
-              margin: EdgeInsets.fromLTRB(5.w, 0, 0, 0),
109
-              child: TextField(
110
-                style: TextStyle(fontSize: 14.sp),
111
-                decoration: const InputDecoration(
112
-                  isCollapsed: true,
113
-                  hintText: '搜索关键字查询',
114
-                  border: InputBorder.none,
115
-                  counterText: '', //去掉计数
116
-                  floatingLabelBehavior: FloatingLabelBehavior.never,
47
+          ),
48
+          child: Row(
49
+            mainAxisAlignment: MainAxisAlignment.center,
50
+            children: [
51
+              Image.asset(
52
+                'images/icons/search.png',
53
+                width: 15.w,
54
+                height: 15.w,
55
+              ),
56
+              Container(
57
+                width: 300.w,
58
+                margin: EdgeInsets.fromLTRB(5.w, 0, 0, 0),
59
+                child: TextField(
60
+                  style: TextStyle(fontSize: 14.sp),
61
+                  decoration: const InputDecoration(
62
+                    isCollapsed: true,
63
+                    hintText: '搜索关键字查询',
64
+                    border: InputBorder.none,
65
+                    counterText: '', //去掉计数
66
+                    floatingLabelBehavior: FloatingLabelBehavior.never,
67
+                  ),
68
+                  onChanged: (e) {
69
+                    _onChange(e);
70
+                  },
117 71
                 ),
118
-                onChanged: (e) {
119
-                  _onChange(e);
120
-                },
121 72
               ),
122
-            ),
123
-          ],
73
+            ],
74
+          ),
124 75
         ),
125
-      ),
126
-          Expanded(
127
-            child:
128
-            (
129
-                EasyRefresh(
130
-                  controller: _controller,
131
-                  firstRefresh: true,
132
-                  onRefresh: () async {
133
-                    await Future.delayed(Duration(seconds: 1), () {
134
-                      print("下拉刷新-----");
135
-                      Map<String, dynamic> params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value};
136
-
137
-                      getNewData(params);
138
-                      _controller.resetLoadState();
139
-                    });
140
-                  },
141
-                  onLoad: () async {
142
-                    await Future.delayed(Duration(seconds: 1), () {
143
-                      if (_count == maxSum) {
144
-                        Fluttertoast.showToast(msg: '暂无更多数据哦');
145
-                      } else {
146
-                        Map<String, dynamic> params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value};
147
-
148
-                        getMoreData(params);
149
-                      }
150
-                      _controller.finishLoad(noMore: _count >= maxSum);
151
-
152
-                    });
153
-                  },
154
-                  child: Obx(
155
-                        () => cardSearchList.value.length > 0
156
-                        ?
157
-                    Column(
158
-                      mainAxisSize: MainAxisSize.min,
159
-                      children: cardSearchList.value
160
-                          .map((item) => CarsCard(item: item))
161
-                          .toList(),
162
-                    ): NullCard(text: '暂无农机信息!'),
163
-                  ),
164
-                )
165
-
166
-            ),
167
-          )
168
-    ]));
76
+        Expanded(
77
+          child: RefreshMoreList(
78
+            pPrams: params,
79
+            cardText: '暂无农机',
80
+            fetch: getMachinery,
81
+            useState: (state) {
82
+              machineryList(GetList(state));
83
+            },
84
+            builder: (
85
+                {required BuildContext context, required Function toggle}) {
86
+              Refresh = toggle;
87
+              return Obx(
88
+                () => Column(
89
+                  children: machineryList.value
90
+                      .map(
91
+                        (item) => CarsCard(item: item),
92
+                      )
93
+                      .toList(),
94
+                ),
95
+              );
96
+            },
97
+          ),
98
+        )
99
+      ],
100
+    );
169 101
   }
170 102
 }

+ 2
- 2
lib/services/homeAPI.dart Zobrazit soubor

@@ -88,8 +88,8 @@ Future getMachineryInfo(String id, String location, bool attached) async {
88 88
  * @param {*} data
89 89
  * @returns
90 90
  */
91
-Future getMachineryType() async {
92
-  return request('/machinery-type', options: Options(method: 'GET'));
91
+Future getMachineryType(params) async {
92
+  return request('/machinery-type', options: Options(method: 'GET'),queryParameters: params);
93 93
 }
94 94
 
95 95
 

+ 13
- 9
lib/widgets/RefreshMoreList.dart Zobrazit soubor

@@ -12,10 +12,12 @@ class RefreshMoreList extends StatefulWidget {
12 12
     required this.fetch,
13 13
     required this.builder,
14 14
     required this.useState,
15
+    this.isHome,
15 16
   }) : super(key: key);
16 17
   final String cardText;
17 18
   final Rx<Map<String, dynamic>> pPrams;
18 19
   final Function fetch;
20
+  bool? isHome;
19 21
   Function(List<dynamic> state) useState;
20 22
   Widget Function({
21 23
     required BuildContext context,
@@ -105,15 +107,17 @@ class _RefreshMoreList extends State<RefreshMoreList> {
105 107
           infoColor: const Color(0xff666666),
106 108
         ),
107 109
         // firstRefresh: true,//是否首次刷新
108
-        onRefresh: () async {
109
-          await Future.delayed(const Duration(seconds: 1), () {
110
-            // print("下拉刷新-----");
111
-            getNewData();
112
-            _count = dataList.value.length;
113
-            // print("最新条数" + _count.toString());
114
-            _controller.resetLoadState();
115
-          });
116
-        },
110
+        onRefresh: widget.isHome != null
111
+            ? null
112
+            : () async {
113
+                await Future.delayed(const Duration(seconds: 1), () {
114
+                  // print("下拉刷新-----");
115
+                  getNewData();
116
+                  _count = dataList.value.length;
117
+                  // print("最新条数" + _count.toString());
118
+                  _controller.resetLoadState();
119
+                });
120
+              },
117 121
         onLoad: () async {
118 122
           await Future.delayed(const Duration(seconds: 1), () {
119 123
             // print("上拉加载-----");