我有RefreshIndicator,里面有一个ListView。当ListView的内容没有超过viewPort时(这意味着它尚不能滚动),RefreshIndicator不可用。
令人惊讶的是,当我删除controller
和physics
时,RefreshIndicator起作用
但是我的代码必须在_scrollController上侦听,因此无法将其删除,因此还有其他解决方法
child: RefreshIndicator(
color: WColors.theme_color,
child: ListView.builder(
controller: _scrollController,
physics: BouncingScrollPhysics(),
shrinkWrap: false,
itemBuilder: (BuildContext context, int index) {
if (datas == null || datas.length == 0) {
return Container(
height: pt(400),
alignment: Alignment.center,
child: datas == null
? CupertinoActivityIndicator()
: Text(
res.allEmpty,
style: TextStyle(fontSize: 18),
),
);
} else {
if (index != datas.length) {
return TodoItem(
index,
datas[index],
);
} else {
return Container(
width: double.infinity,
height: pt(45),
alignment: Alignment.center,
child: (currentPage < totalPage)
? CupertinoActivityIndicator()
: Text(
res.isBottomst,
style: TextStyle(color: WColors.hint_color),
),
);
}
}
},
itemCount:
(datas == null || datas.length == 0) ? 1 : datas.length + 1,
),
onRefresh: _refreshAuto),
);
答案 0 :(得分:0)
如果您想始终使用RefreshIndicator
,即使您的列表很小,也只需用physics
替换您正在使用的AlwaysScrollableScrollPhysics()
。
ListView.builder(
controller: _scrollController,
physics: const AlwaysScrollableScrollPhysics()
shrinkWrap: false,
itemBuilder: (BuildContext context, int index) {