import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:ftrecruiter/comm/utils/log_utils.dart'; import 'package:ftrecruiter/comm/widget/load_state_layout.dart'; import 'package:ftrecruiter/modules/zdemo/page_four.dart'; import 'package:ftrecruiter/modules/zdemo/page_one.dart'; import 'package:ftrecruiter/modules/zdemo/page_three.dart'; import 'package:ftrecruiter/modules/zdemo/page_two.dart'; class DemoLoadPage extends StatelessWidget { final controller = Get.put(DemoLoadController()); final _pageController = PageController(initialPage: 0, keepPage: true); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("测试LoadStateLayout"), ), body: GetBuilder(builder: (controller) { //加载布局-封装Loading Error Empty Success状态切换 return LoadStateLayout( state: controller._layoutState, errorRetry: () { controller.changeState(LoadState.State_Loading); controller.loadData(); }, //加载成功的页面-试试ViewPager的滑动效果 successWidget: PageView( controller: _pageController, onPageChanged: (index) { Log.d("cur index:$index"); // _pageController.jumpToPage(index); _pageController.animateToPage(index, duration: const Duration(milliseconds: 16), //跳转的间隔时间 curve: Curves.fastOutSlowIn); }, children: [ PageOne(), PageTwo(), PageThree(), PageFour(), ], ), ); })); } } class DemoLoadController extends GetxController { LoadState _layoutState = LoadState.State_Loading; void changeState(LoadState state) { _layoutState = state; update(); } @override void onReady() { super.onReady(); loadData(); } void loadData() { //模拟网络请求 Future.delayed(const Duration(seconds: 2)).then((_) { //此为加载结束 changeState(LoadState.State_Success); // changeState(LoadState.State_Empty); // changeState(LoadState.State_Error); }).catchError((_) { //此为加载失败 changeState(LoadState.State_Error); }); } }