import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:get/get.dart'; import 'package:ftrecruiter/comm/widget/my_refresh_list.dart'; import 'package:ftrecruiter/comm/widget/refresh/custom_foot_view.dart'; //Demo列表3,使用StatefulWidget+GetBuilder的方式 可以保存状态了,推荐使用 class PageFour extends StatefulWidget { @override State createState() { return _GoodsListPageState(); } } class _GoodsListPageState extends State with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { List _list = List.generate(10, (index) => "1234"); int _page = 1; final int _maxPage = 10; EasyRefreshController easyRefreshController = EasyRefreshController(); Future _onRefresh() async { // 设置两秒后关闭刷新,时间可以随便设置,根据项目需求,正常在请求成功后,也要关闭 await Future.delayed(const Duration(seconds: 2), () { setState(() { _page = 1; _list = List.generate(10, (index) => "1234"); // 控制器关闭刷新功能 easyRefreshController.finishRefresh(success: true); }); }); } Future _loadMore() async { await Future.delayed(const Duration(seconds: 2), () { setState(() { _page++; _list.addAll(List.generate(10, (i) => "4567")); // 控制器关闭加载功能,还可以设置没有更多数据noMore easyRefreshController.finishLoad(success: true); }); }); } @override Widget build(BuildContext context) { return EasyRefresh.custom( //创建的刷新控制器 controller: easyRefreshController, //自定义刷新头 header: ClassicalHeader( enableInfiniteRefresh: false, float: false, enableHapticFeedback: false, refreshText: "pullToRefresh", refreshReadyText: "releaseToRefresh", refreshingText: "refreshing", refreshedText: "refreshed", refreshFailedText: "refreshFailed", noMoreText: "noMore", infoText: "updateAt %T", ), //自定义刷新脚 footer: // ClassicalFooter( // enableInfiniteLoad: true, // enableHapticFeedback: false, // loadText: "pushToLoad", // loadReadyText: "releaseToLoad", // loadingText: "loading", // loadedText: "loaded", // loadFailedText: "loadFailed", // noMoreText: "noMore", // infoText: "updateAt %T", // ), // BallPulseFooter(), CustomFootView(), onRefresh: _onRefresh, onLoad: _loadMore, slivers: [ // 这里设置列表 - 可以用SliverList,这里是固定高度,使用SliverFixedExtentList更好 SliverFixedExtentList( itemExtent: 100, delegate: SliverChildBuilderDelegate((context, index) { return Container( margin: const EdgeInsets.only(top: 10.0), width: double.infinity, height: 100, color: Colors.pink, child: Row( children: [ Text("我是列表Item:$index"), ], ), ); }, childCount: _list.length), ), ], ); } @override bool get wantKeepAlive => true; }