import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:ftrecruiter/comm/constants/color_constants.dart'; import 'package:ftrecruiter/comm/widget/alive/keep_alive_wrapper.dart'; import 'package:ftrecruiter/comm/widget/my_refresh_list.dart'; import 'package:ftrecruiter/local/theme/theme_config.dart'; //Demo列表2,使用GetX和GetBuild的功能,但是不是StatefulWidget控件 左右切换无法保存页面状态 class PageOne extends StatelessWidget { final controller = Get.put(PageOneController()); 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 Container( width: double.infinity, height: double.infinity, color: ColorConstants.pageBg, child: GetBuilder( builder: (controller) { return KeepAliveWrapper( //使用这样布局包裹一样可以保存页面状态 child: MyRefreshListView( itemCount: controller.listData.length, hasMore: controller.curPage < 10, // onRefresh: _onRefresh, //不加就不带刷新布局 loadMore: _loadMore, itemBuilder: (_, index) { return Container( margin: const EdgeInsets.only(top: 10.0), width: double.infinity, height: 100, color: Colors.grey, child: Row( children: [ Text("我是列表Item:$index"), ], ), ); }, ), ); }), ); } } class PageOneController 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((_) { //此为加载失败 }); } }