12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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<StatefulWidget> createState() {
- return _GoodsListPageState();
- }
- }
- class _GoodsListPageState extends State<PageThree>
- with AutomaticKeepAliveClientMixin<PageThree>, SingleTickerProviderStateMixin {
- final int _maxPage = 10;
- final PageThreeController controller = Get.find<PageThreeController>();
- 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<PageThreeController>(
- 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<String> 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((_) {
- //此为加载失败
- });
- }
- }
|