page_two.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:ftrecruiter/comm/widget/my_refresh_list.dart';
  4. import 'package:ftrecruiter/local/theme/theme_config.dart';
  5. //Demo列表2,单纯的使用StatefulWidget的方式 可以保存状态了,但是无法使用GetX和GetBuild的功能了
  6. class PageTwo extends StatefulWidget {
  7. @override
  8. _GoodsListPageState createState() => _GoodsListPageState();
  9. }
  10. class _GoodsListPageState extends State<PageTwo>
  11. with AutomaticKeepAliveClientMixin<PageTwo>, SingleTickerProviderStateMixin {
  12. List<String> _list = [];
  13. int _page = 1;
  14. final int _maxPage = 10;
  15. Future _onRefresh() async {
  16. await Future.delayed(const Duration(seconds: 2), () {
  17. setState(() {
  18. _page = 1;
  19. _list = List.generate(10, (index) => "1234");
  20. });
  21. });
  22. }
  23. Future _loadMore() async {
  24. await Future.delayed(const Duration(seconds: 2), () {
  25. setState(() {
  26. _list.addAll(List.generate(10, (i) => "4567"));
  27. _page++;
  28. });
  29. });
  30. }
  31. @override
  32. void initState() {
  33. super.initState();
  34. _onRefresh();
  35. }
  36. @override
  37. Widget build(BuildContext context) {
  38. return MyRefreshListView(
  39. itemCount: _list.length,
  40. hasMore: _page < _maxPage,
  41. onRefresh: _onRefresh,
  42. loadMore: _loadMore,
  43. itemBuilder: (_, index) {
  44. return Container(
  45. margin: const EdgeInsets.only(top: 10.0),
  46. width: double.infinity,
  47. height: 100,
  48. color: Colors.lightGreen,
  49. child: Row(
  50. children: [
  51. Text("我是列表Item:$index"),
  52. ],
  53. ),
  54. );
  55. },
  56. );
  57. }
  58. @override
  59. bool get wantKeepAlive => true;
  60. }