1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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<PageOneController>(
- 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<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((_) {
- //此为加载失败
- });
- }
- }
|