import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:ftrecruiter/comm/widget/my_refresh_list.dart'; import 'package:ftrecruiter/local/theme/theme_config.dart'; //Demo列表3,使用StatefulWidget+GetBuilder的方式 可以保存状态了,推荐使用 class PageThree extends StatefulWidget { final controller = Get.put(PageThreeController()); @override State createState() { return _GoodsListPageState(); } } class _GoodsListPageState extends State with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { final int _maxPage = 10; final PageThreeController controller = Get.find(); Future _onRefresh() async { controller.setCurPage(1); controller.listData.clear(); controller.loadData(); } Future _loadMore() async { controller.setCurPage(controller.curPage++); await controller.loadData(); } @override Widget build(BuildContext context) { return GetBuilder( builder: (controller) { return MyRefreshListView( itemCount: controller.listData.length, hasMore: controller.curPage < _maxPage, onRefresh: _onRefresh, loadMore: _loadMore, itemBuilder: (_, index) { return Container( margin: const EdgeInsets.only(top: 10.0), width: double.infinity, height: 100, color: Colors.lightBlue, child: Row( children: [ Text("我是列表Item:$index"), ], ), ); }, ); }); } @override bool get wantKeepAlive => true; } class PageThreeController extends GetxController { List listData = []; int curPage = 1; @override void onReady() { super.onReady(); loadData(); } void setCurPage(page) { curPage = page; update(); } Future loadData() async { //模拟网络请求 Future.delayed(const Duration(seconds: 2)).then((_) { //此为加载结束 listData.addAll(List.generate(10, (index) => "123")); update(); }).catchError((_) { //此为加载失败 }); } }