import 'dart:async'; import 'package:farmer_client/widgets/layout/BasicPage.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:get/get.dart'; import 'package:get/get_rx/src/rx_types/rx_types.dart'; import '../../models/app.dart'; import '../../models/entities/CardListModel.dart'; import '../../services/homeAPI.dart'; import '../../widgets/CarsCard.dart'; import '../../widgets/NullCard.dart'; import 'dart:async'; class SearchPage extends BasicPage { EasyRefreshController _controller = EasyRefreshController(); final cardSearchList = Rx>([]); final newCardSearchList = Rx>([]); var pageIndex = 1; //页数 var count = 10; //每页10条 late int maxSum; //最多条数 String value=''; //最多条数 int _count = 0; var location = AppController.t.locationStr; void _onChange(String value) { Map params = {'pageNum': 1,'location':AppController.t.locationStr,'q':value}; getNewData(params); // searchMachinery(params).then((value) { // EasyLoading.show(status: '数据加载中...'); // final list = []; // value['records'].forEach((item) { // list.add(CardListModel.fromJson(item)); // }); // cardSearchList(list); // newCardSearchList(list); // EasyLoading.dismiss(); // // }); } void getNewData(Map? params) { pageIndex = 1; params!['pageNum'] = pageIndex; print(params['pageNum']); searchMachinery(params).then((value) { maxSum = value['total']; List list = []; value['records'].forEach((item) { list.add(CardListModel.fromJson(item)); }); cardSearchList(list); newCardSearchList(list); _count = cardSearchList.value.length; }); } void getMoreData(Map? params) { pageIndex++; params!['pageNum'] = pageIndex; print(params['pageNum']); searchMachinery(params).then((value) { maxSum = value['total']; List list = []; List Newlist = []; value['records'].forEach((item) { list.add(CardListModel.fromJson(item)); }); newCardSearchList.value.addAll(list); Newlist.addAll(newCardSearchList.value); cardSearchList(Newlist); _count = cardSearchList.value.length; }); } @override Widget builder(BuildContext context) { naviTitle = '搜索'; return Container( child: Column(children: [ Container( width: 345.w, height: 34.h, margin: EdgeInsets.symmetric(vertical: 15.h, horizontal: 15.w), padding: EdgeInsets.symmetric(vertical: 0, horizontal: 10.w), decoration: BoxDecoration( color: Color(0xFFf8f8f8), borderRadius: BorderRadius.all(Radius.circular(17.w))), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( 'images/icons/search.png', width: 15.w, height: 15.w, ), Container( width: 300.w, margin: EdgeInsets.fromLTRB(5.w, 0, 0, 0), child: TextField( style: TextStyle(fontSize: 14.sp), decoration: const InputDecoration( isCollapsed: true, hintText: '搜索关键字查询', border: InputBorder.none, counterText: '', //去掉计数 floatingLabelBehavior: FloatingLabelBehavior.never, ), onChanged: (e) { _onChange(e); }, ), ), ], ), ), Expanded( child: ( EasyRefresh( controller: _controller, firstRefresh: true, onRefresh: () async { await Future.delayed(Duration(seconds: 1), () { print("下拉刷新-----"); Map params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value}; getNewData(params); _controller.resetLoadState(); }); }, onLoad: () async { await Future.delayed(Duration(seconds: 1), () { if (_count == maxSum) { Fluttertoast.showToast(msg: '暂无更多数据哦'); } else { Map params = {'pageNum': pageIndex,'location':AppController.t.locationStr,'q':value}; getMoreData(params); } _controller.finishLoad(noMore: _count >= maxSum); }); }, child: Obx( () => cardSearchList.value.length > 0 ? Column( mainAxisSize: MainAxisSize.min, children: cardSearchList.value .map((item) => CarsCard(item: item)) .toList(), ): NullCard(text: '暂无农机信息!'), ), ) ), ) ])); } }