Parcourir la source

add CustomScrillViewSearch

[baozhangchao] il y a 3 ans
Parent
révision
cca8eec6f7
3 fichiers modifiés avec 108 ajouts et 25 suppressions
  1. 2
    1
      lib/pages/MoreCars/index.dart
  2. 97
    10
      lib/pages/search/index.dart
  3. 9
    14
      lib/services/homeAPI.dart

+ 2
- 1
lib/pages/MoreCars/index.dart Voir le fichier

@@ -54,8 +54,9 @@ class _MoreCarsState extends State<MoreCars> with TickerProviderStateMixin {
54 54
 //进来拿到全部农机
55 55
   void _getAllCarsList() {
56 56
     EasyLoading.show(status: '数据加载中...');
57
+    Map<String, dynamic> params = {'pageNum': 1,'location':location};
57 58
 
58
-    getMachinery(location ?? '112.087465,32.687507').then((value) {
59
+    getMachinery(params).then((value) {
59 60
       final list = <CardListModel>[];
60 61
       value['records'].forEach((item) {
61 62
         list.add(CardListModel.fromJson(item));

+ 97
- 10
lib/pages/search/index.dart Voir le fichier

@@ -3,7 +3,9 @@ import 'dart:async';
3 3
 import 'package:farmer_client/widgets/layout/BasicPage.dart';
4 4
 import 'package:flutter/material.dart';
5 5
 import 'package:flutter_easyloading/flutter_easyloading.dart';
6
+import 'package:flutter_easyrefresh/easy_refresh.dart';
6 7
 import 'package:flutter_screenutil/flutter_screenutil.dart';
8
+import 'package:fluttertoast/fluttertoast.dart';
7 9
 import 'package:get/get.dart';
8 10
 import 'package:get/get_rx/src/rx_types/rx_types.dart';
9 11
 
@@ -15,21 +17,69 @@ import '../../widgets/NullCard.dart';
15 17
 import 'dart:async';
16 18
 
17 19
 class SearchPage extends BasicPage {
20
+  EasyRefreshController _controller = EasyRefreshController();
21
+
18 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;
29
+
19 30
   var location = AppController.t.locationStr;
20 31
 
21 32
   void _onChange(String value) {
22
-    print(location);
23
-    searchMachinery(location.toString(), value).then((value) {
24
-      EasyLoading.show(status: '数据加载中...');
33
+    value=value;
34
+    Map<String, dynamic> params = {'pageNum': 1,'location':AppController.t.locationStr,'q':value};
35
+
36
+    getNewData(params);
37
+    // searchMachinery(params).then((value) {
38
+    //   EasyLoading.show(status: '数据加载中...');
39
+    //   final list = <CardListModel>[];
40
+    //   value['records'].forEach((item) {
41
+    //     list.add(CardListModel.fromJson(item));
42
+    //   });
43
+    //   cardSearchList(list);
44
+    //   newCardSearchList(list);
45
+    //   EasyLoading.dismiss();
46
+    //
47
+    // });
48
+  }
25 49
 
26
-      final list = <CardListModel>[];
50
+
51
+  void getNewData(Map? params) {
52
+    pageIndex = 1;
53
+    params!['pageNum'] = pageIndex;
54
+    print(params['pageNum']);
55
+    searchMachinery(params).then((value) {
56
+      maxSum = value['total'];
57
+
58
+      List<CardListModel> list = [];
27 59
       value['records'].forEach((item) {
28 60
         list.add(CardListModel.fromJson(item));
29 61
       });
30 62
       cardSearchList(list);
31
-      EasyLoading.dismiss();
63
+      newCardSearchList(list);
64
+      _count = cardSearchList.value.length;
65
+    });
66
+  }
32 67
 
68
+  void getMoreData(Map? params) {
69
+    pageIndex++;
70
+    params!['pageNum'] = pageIndex;
71
+    print(params['pageNum']);
72
+    searchMachinery(params).then((value) {
73
+      maxSum = value['total'];
74
+      List<CardListModel> list = [];
75
+      List<CardListModel> Newlist = [];
76
+      value['records'].forEach((item) {
77
+        list.add(CardListModel.fromJson(item));
78
+      });
79
+      newCardSearchList.value.addAll(list);
80
+      Newlist.addAll(newCardSearchList.value);
81
+      cardSearchList(Newlist);
82
+      _count = cardSearchList.value.length;
33 83
     });
34 84
   }
35 85
 
@@ -74,11 +124,48 @@ class SearchPage extends BasicPage {
74 124
           ],
75 125
         ),
76 126
       ),
77
-      Obx(() => Column(
78
-            children: cardSearchList.value.length > 0
79
-                ? cardSearchList().map((item) => CarsCard(item: item)).toList()
80
-                : [NullCard(text: '暂无农机信息!')],
81
-          ))
127
+          Expanded(
128
+            child:
129
+            (
130
+                EasyRefresh(
131
+                  controller: _controller,
132
+                  firstRefresh: true,
133
+                  onRefresh: () async {
134
+                    await Future.delayed(Duration(seconds: 1), () {
135
+                      print("下拉刷新-----");
136
+                      Map<String, dynamic> params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value};
137
+
138
+                      getNewData(params);
139
+                      _controller.resetLoadState();
140
+                    });
141
+                  },
142
+                  onLoad: () async {
143
+                    await Future.delayed(Duration(seconds: 1), () {
144
+                      if (_count == maxSum) {
145
+                        Fluttertoast.showToast(msg: '暂无更多数据哦');
146
+                      } else {
147
+                        Map<String, dynamic> params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value};
148
+
149
+                        getMoreData(params);
150
+                      }
151
+                      _controller.finishLoad(noMore: _count >= maxSum);
152
+
153
+                    });
154
+                  },
155
+                  child: Obx(
156
+                        () => cardSearchList.value.length > 0
157
+                        ?
158
+                    Column(
159
+                      mainAxisSize: MainAxisSize.min,
160
+                      children: cardSearchList.value
161
+                          .map((item) => CarsCard(item: item))
162
+                          .toList(),
163
+                    ): NullCard(text: '暂无农机信息!'),
164
+                  ),
165
+                )
166
+
167
+            ),
168
+          )
82 169
     ]));
83 170
   }
84 171
 }

+ 9
- 14
lib/services/homeAPI.dart Voir le fichier

@@ -21,10 +21,12 @@ Future getHomeBanner(String position) async {
21 21
  * @param {*} data
22 22
  * @returns
23 23
  */
24
-Future getMachinery( params) async {
25
-  return request('/machinery', options: Options(method: 'GET'), queryParameters:params).catchError((error) => {
26
-        Fluttertoast.showToast(msg: error.error['message']),
27
-      });
24
+Future getMachinery(params) async {
25
+  return request('/machinery',
26
+          options: Options(method: 'GET'), queryParameters: params)
27
+      .catchError((error) => {
28
+            Fluttertoast.showToast(msg: error.error['message']),
29
+          });
28 30
 }
29 31
 
30 32
 /**
@@ -33,19 +35,12 @@ Future getMachinery( params) async {
33 35
  * @returns
34 36
  */
35 37
 Future searchMachinery(
36
-  String location,
37
-  String? q,
38
+    params
38 39
 ) async {
39 40
   return request('/machinery',
40 41
       options: Options(method: 'GET'),
41
-      queryParameters: {
42
-        'location': location,
43
-        'q': q,
44
-      },
45
-      data: {
46
-        'q': q,
47
-        'location': location
48
-      }).catchError((error) => {
42
+      queryParameters: params,
43
+      data: params).catchError((error) => {
49 44
         Fluttertoast.showToast(msg: error.error['message']),
50 45
       });
51 46
 }