page_four.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/rendering.dart';
  3. import 'package:flutter_easyrefresh/easy_refresh.dart';
  4. import 'package:get/get.dart';
  5. import 'package:ftrecruiter/comm/widget/my_refresh_list.dart';
  6. import 'package:ftrecruiter/comm/widget/refresh/custom_foot_view.dart';
  7. //Demo列表3,使用StatefulWidget+GetBuilder的方式 可以保存状态了,推荐使用
  8. class PageFour extends StatefulWidget {
  9. @override
  10. State<StatefulWidget> createState() {
  11. return _GoodsListPageState();
  12. }
  13. }
  14. class _GoodsListPageState extends State<PageFour>
  15. with AutomaticKeepAliveClientMixin<PageFour>, SingleTickerProviderStateMixin {
  16. List<String> _list = List.generate(10, (index) => "1234");
  17. int _page = 1;
  18. final int _maxPage = 10;
  19. EasyRefreshController easyRefreshController = EasyRefreshController();
  20. Future _onRefresh() async {
  21. // 设置两秒后关闭刷新,时间可以随便设置,根据项目需求,正常在请求成功后,也要关闭
  22. await Future.delayed(const Duration(seconds: 2), () {
  23. setState(() {
  24. _page = 1;
  25. _list = List.generate(10, (index) => "1234");
  26. // 控制器关闭刷新功能
  27. easyRefreshController.finishRefresh(success: true);
  28. });
  29. });
  30. }
  31. Future _loadMore() async {
  32. await Future.delayed(const Duration(seconds: 2), () {
  33. setState(() {
  34. _page++;
  35. _list.addAll(List.generate(10, (i) => "4567"));
  36. // 控制器关闭加载功能,还可以设置没有更多数据noMore
  37. easyRefreshController.finishLoad(success: true);
  38. });
  39. });
  40. }
  41. @override
  42. Widget build(BuildContext context) {
  43. return EasyRefresh.custom(
  44. //创建的刷新控制器
  45. controller: easyRefreshController,
  46. //自定义刷新头
  47. header: ClassicalHeader(
  48. enableInfiniteRefresh: false,
  49. float: false,
  50. enableHapticFeedback: false,
  51. refreshText: "pullToRefresh",
  52. refreshReadyText: "releaseToRefresh",
  53. refreshingText: "refreshing",
  54. refreshedText: "refreshed",
  55. refreshFailedText: "refreshFailed",
  56. noMoreText: "noMore",
  57. infoText: "updateAt %T",
  58. ),
  59. //自定义刷新脚
  60. footer:
  61. // ClassicalFooter(
  62. // enableInfiniteLoad: true,
  63. // enableHapticFeedback: false,
  64. // loadText: "pushToLoad",
  65. // loadReadyText: "releaseToLoad",
  66. // loadingText: "loading",
  67. // loadedText: "loaded",
  68. // loadFailedText: "loadFailed",
  69. // noMoreText: "noMore",
  70. // infoText: "updateAt %T",
  71. // ),
  72. // BallPulseFooter(),
  73. CustomFootView(),
  74. onRefresh: _onRefresh,
  75. onLoad: _loadMore,
  76. slivers: <Widget>[
  77. // 这里设置列表 - 可以用SliverList,这里是固定高度,使用SliverFixedExtentList更好
  78. SliverFixedExtentList(
  79. itemExtent: 100,
  80. delegate: SliverChildBuilderDelegate((context, index) {
  81. return Container(
  82. margin: const EdgeInsets.only(top: 10.0),
  83. width: double.infinity,
  84. height: 100,
  85. color: Colors.pink,
  86. child: Row(
  87. children: [
  88. Text("我是列表Item:$index"),
  89. ],
  90. ),
  91. );
  92. }, childCount: _list.length),
  93. ),
  94. ],
  95. );
  96. }
  97. @override
  98. bool get wantKeepAlive => true;
  99. }