Flutter上拉加载和下拉刷新
以下为代码片段
@override
void initState() {
super.initState();
_controller = EasyRefreshController(
controlFinishRefresh: true,
controlFinishLoad: true,
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body:EasyRefresh(
controller: _controller,
header: const ClassicHeader(
processingText: '加载中...',
readyText: '加载中...',
processedText: '加载完成',
showMessage: false,
armedText: '加载中...',
dragText: '加载中...',
succeededIcon: Icon(null),
),
footer: const ClassicFooter(
noMoreText: '到底啦~~~',
showMessage: false,
noMoreIcon: Icon(null),
readyText: '正在努力加载...',
processingText: '正在努力加载...',
),
onRefresh: () async {
await Future.delayed(const Duration(milliseconds: 300));
if (!mounted) {
return;
}
setState(() {
_count = 2;
});
_controller.finishRefresh();
_controller.resetFooter();
},
onLoad: () async {
await Future.delayed(const Duration(milliseconds: 300));
if (!mounted) {
return;
}
setState(() {
_count += 2;
});
_controller.finishLoad(_count >= dataArray.length ? IndicatorResult.noMore : IndicatorResult.success);
},
child: Container(
height: MediaQuery.of(context).size.height,
child: ListView.builder(
// 设置顶部内边距为零
shrinkWrap: true,
// physics: const NeverScrollableScrollPhysics(),
itemCount: _count,
itemBuilder: (context, index) {
return _buildCell(index);
},
),
),
),
backgroundColor: const Color(0xffF5F5F5),
);
}
_buildCell(int index) {
return Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
),
child: Text(
'待展演',
style: TextStyle(fontSize: 14, color: Color(0xff1C86F2)),
),
),
const SizedBox(
height: 10,
),
],
);
}
以下为自定义加载内容的属性
mainAxisAlignment:在水平方向上对齐图标和文本的方式。
backgroundColor:底部加载小部件的背景颜色。
dragText:拖动时显示的文本。
armedText:准备加载时显示的文本。
readyText:准备好加载时显示的文本。
processingText:正在加载时显示的文本。
processedText:加载完成时显示的文本。
noMoreText:没有更多数据可加载时显示的文本。
failedText:加载失败时显示的文本。
showText:是否显示文本。
messageText:用于显示其他相关消息的文本。
showMessage:是否显示消息文本。
textDimension:文本的尺寸大小。
iconDimension:图标的尺寸大小。
spacing:图标和文本之间的间距。
succeededIcon:加载成功时显示的图标。
failedIcon:加载失败时显示的图标。
noMoreIcon:没有更多数据可加载时显示的图标。
pullIconBuilder:根据下拉进度构建图标的回调函数。
textStyle:文本的样式。
textBuilder:根据加载状态构建文本的回调函数。
messageStyle:消息文本的样式。
messageBuilder:根据加载状态构建消息文本的回调函数。
clipBehavior:小部件的剪辑行为。
iconTheme:图标的主题样式。
progressIndicatorSize:加载指示器(如进度条、旋转加载动画)的尺寸大小。
progressIndicatorStrokeWidth:加载指示器的线条宽度。
————————————————
版权声明:本文为CSDN博主「菜鸟张花花」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45783177/article/details/134395790