|
@@ -1,9 +1,7 @@
|
|
|
+import 'package:easy_refresh/easy_refresh.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter/rendering.dart';
|
|
|
-import 'package:flutter_easyrefresh/easy_refresh.dart';
|
|
|
-import 'package:get/get.dart';
|
|
|
-import 'package:ftrecruiter/comm/widget/my_refresh_list.dart';
|
|
|
-import 'package:ftrecruiter/comm/widget/refresh/custom_foot_view.dart';
|
|
|
+import 'package:ftrecruiter/modules/zdemo/list_item.dart';
|
|
|
|
|
|
//Demo列表3,使用StatefulWidget+GetBuilder的方式 可以保存状态了,推荐使用
|
|
|
class PageFour extends StatefulWidget {
|
|
@@ -18,7 +16,12 @@ class _GoodsListPageState extends State<PageFour>
|
|
|
List<String> _list = List.generate(10, (index) => "1234");
|
|
|
int _page = 1;
|
|
|
final int _maxPage = 10;
|
|
|
- EasyRefreshController easyRefreshController = EasyRefreshController();
|
|
|
+
|
|
|
+ //刷新控件控制器
|
|
|
+ final EasyRefreshController _controller = EasyRefreshController(
|
|
|
+ controlFinishRefresh: true,
|
|
|
+ controlFinishLoad: true,
|
|
|
+ );
|
|
|
|
|
|
Future _onRefresh() async {
|
|
|
// 设置两秒后关闭刷新,时间可以随便设置,根据项目需求,正常在请求成功后,也要关闭
|
|
@@ -28,7 +31,8 @@ class _GoodsListPageState extends State<PageFour>
|
|
|
_list = List.generate(10, (index) => "1234");
|
|
|
|
|
|
// 控制器关闭刷新功能
|
|
|
- easyRefreshController.finishRefresh(success: true);
|
|
|
+ _controller.finishRefresh();
|
|
|
+ _controller.resetFooter();
|
|
|
});
|
|
|
});
|
|
|
}
|
|
@@ -40,65 +44,82 @@ class _GoodsListPageState extends State<PageFour>
|
|
|
_list.addAll(List.generate(10, (i) => "4567"));
|
|
|
|
|
|
// 控制器关闭加载功能,还可以设置没有更多数据noMore
|
|
|
- easyRefreshController.finishLoad(success: true);
|
|
|
+ _controller.finishLoad(IndicatorResult.success);
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
Widget build(BuildContext context) {
|
|
|
- return EasyRefresh.custom(
|
|
|
+ return EasyRefresh(
|
|
|
//创建的刷新控制器
|
|
|
- controller: easyRefreshController,
|
|
|
+ controller: _controller,
|
|
|
+
|
|
|
//自定义刷新头
|
|
|
- header: ClassicalHeader(
|
|
|
- enableInfiniteRefresh: false,
|
|
|
- float: false,
|
|
|
- enableHapticFeedback: false,
|
|
|
- refreshText: "pullToRefresh",
|
|
|
- refreshReadyText: "releaseToRefresh",
|
|
|
- refreshingText: "refreshing",
|
|
|
- refreshedText: "refreshed",
|
|
|
- refreshFailedText: "refreshFailed",
|
|
|
- noMoreText: "noMore",
|
|
|
- infoText: "updateAt %T",
|
|
|
- ),
|
|
|
+ // header: MaterialHeader(),
|
|
|
+
|
|
|
+ // ClassicalHeader(
|
|
|
+ // enableInfiniteRefresh: false,
|
|
|
+ // float: false,
|
|
|
+ // enableHapticFeedback: false,
|
|
|
+ // refreshText: "pullToRefresh",
|
|
|
+ // refreshReadyText: "releaseToRefresh",
|
|
|
+ // refreshingText: "refreshing",
|
|
|
+ // refreshedText: "refreshed",
|
|
|
+ // refreshFailedText: "refreshFailed",
|
|
|
+ // noMoreText: "noMore",
|
|
|
+ // infoText: "updateAt %T",
|
|
|
+ // ),
|
|
|
+
|
|
|
//自定义刷新脚
|
|
|
- footer:
|
|
|
- // ClassicalFooter(
|
|
|
- // enableInfiniteLoad: true,
|
|
|
- // enableHapticFeedback: false,
|
|
|
- // loadText: "pushToLoad",
|
|
|
- // loadReadyText: "releaseToLoad",
|
|
|
- // loadingText: "loading",
|
|
|
- // loadedText: "loaded",
|
|
|
- // loadFailedText: "loadFailed",
|
|
|
- // noMoreText: "noMore",
|
|
|
- // infoText: "updateAt %T",
|
|
|
- // ),
|
|
|
- // BallPulseFooter(),
|
|
|
- CustomFootView(),
|
|
|
+ // footer: MaterialFooter(),
|
|
|
+
|
|
|
+ // ClassicalFooter(
|
|
|
+ // enableInfiniteLoad: true,
|
|
|
+ // enableHapticFeedback: false,
|
|
|
+ // loadText: "pushToLoad",
|
|
|
+ // loadReadyText: "releaseToLoad",
|
|
|
+ // loadingText: "loading",
|
|
|
+ // loadedText: "loaded",
|
|
|
+ // loadFailedText: "loadFailed",
|
|
|
+ // noMoreText: "noMore",
|
|
|
+ // infoText: "updateAt %T",
|
|
|
+ // ),
|
|
|
+ // CustomFootView(),
|
|
|
+
|
|
|
onRefresh: _onRefresh,
|
|
|
onLoad: _loadMore,
|
|
|
- slivers: <Widget>[
|
|
|
- // 这里设置列表 - 可以用SliverList,这里是固定高度,使用SliverFixedExtentList更好
|
|
|
- SliverFixedExtentList(
|
|
|
- itemExtent: 100,
|
|
|
- delegate: SliverChildBuilderDelegate((context, index) {
|
|
|
- return Container(
|
|
|
- margin: const EdgeInsets.only(top: 10.0),
|
|
|
- width: double.infinity,
|
|
|
- height: 100,
|
|
|
- color: Colors.pink,
|
|
|
- child: Row(
|
|
|
- children: [
|
|
|
- Text("我是列表Item:$index"),
|
|
|
- ],
|
|
|
- ),
|
|
|
- );
|
|
|
- }, childCount: _list.length),
|
|
|
- ),
|
|
|
- ],
|
|
|
+
|
|
|
+ // childBuilder: (BuildContext context, ScrollPhysics physics) {
|
|
|
+ // return NestedScrollView(
|
|
|
+ // physics: physics,
|
|
|
+ // headerSliverBuilder: (context, innerBoxIsScrolled) {
|
|
|
+ // return [
|
|
|
+ // const HeaderLocator.sliver(clearExtent: false),
|
|
|
+ // ];
|
|
|
+ // },
|
|
|
+ // body: ListView.builder(
|
|
|
+ //
|
|
|
+ // itemBuilder: (BuildContext context, int index) {
|
|
|
+ // //Item布局
|
|
|
+ // return ListTile(title: Text("$index"));
|
|
|
+ // },
|
|
|
+ // ));
|
|
|
+ // },
|
|
|
+
|
|
|
+ child: CustomScrollView(
|
|
|
+ slivers: [
|
|
|
+ SliverFixedExtentList( //或者直接用Sliver也是可以的,只是一个固定Item高度,一个不固定高度而已
|
|
|
+ itemExtent: 100,
|
|
|
+ delegate: SliverChildBuilderDelegate(
|
|
|
+ (context, index) {
|
|
|
+ return const ListItem(title: "index");
|
|
|
+ },
|
|
|
+ childCount: _list.length,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
);
|
|
|
}
|
|
|
|