import 'package:flutter/material.dart';
class Test1Page extends StatefulWidget {
@override
_Test1PageState createState() {
return _Test1PageState();
}
}
class _Test1PageState extends State<Test1Page> {
ScrollController _scrollController = ScrollController();
bool isLoading = true;//是否加载中
bool isLoadOk = false;//是否加载完成
var list = List<Object>();
@override
void initState() {
super.initState();
_getData(true); //获取数据
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
_getMore(); //加载更多数据
}
});
}
@override
void dispose() {
super.dispose();
_scrollController.dispose();
}
void _getMore() {
if (isLoading) {
return;
} else {
_getData(false);
}
}
void _getData(bool isRefresh) {//是否刷新
setState(() {
isLoading = true;
//网络成功后
if (isRefresh) {
list.clear();
}
//添加list数据
isLoading = false;
isLoadOk = true;
});
}
Future<Null> _refresh() async {
await _getData(true);
return;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.red,
title: Text(
"标题",
),
),
body: RefreshIndicator(
onRefresh: _refresh,
child: Container(
color: Color(0xffefefef),
width: double.infinity,
alignment: Alignment.center,
height: double.infinity,
child: list.length == 0
? (isLoadOk
? Text(
"暂无数据",
style: TextStyle(color: Color(0xff666666), fontSize: 18),
)
: new CircularProgressIndicator(
strokeWidth: 4.0,
valueColor: new AlwaysStoppedAnimation<Color>(Colors.red),
))
: new ListView.builder(
itemCount: list.length,
controller: _scrollController,
itemBuilder: (BuildContext context, int position) {
return Text("");
})),
),
);
}
}
flutter列表页面模板:支持下拉刷新、分页加载、加载中、数据为空
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Screenshots https://github.com/7449/XAdapter/blob/master/...
- 前言 纵观多数App,下拉刷新和上拉加载更多是很常见的功能,但是谷歌官方只有一个SwipeRefreshLayou...
- github地址(Demo下载)https://github.com/zhouxu88/PullToRefresh...
- 本小节将带领大家实现App最常用的两个功能分页数据加载(滚动加载)及下拉刷新。 重要说明: 这是一个系列教程,非本...
- 5月以来,哪怕对市场风向再不敏感的人,也感觉到阵阵凉意。二级市场连续下挫,一级市场融资环境恶化,不论企业融资数量还...