Flutter PageView.builder中的颤振刷新指示器
我想在Flutter PageView.builder中的颤振刷新指示器,flutter,Flutter,我想在RefreshIndicator内部实现水平PageView.builder。若用户滚动到最后,我想刷新并获取新数据,但我试图向下拉以刷新,但指示器并没有出现,新数据也不会被获取。 我该怎么做 return new Scaffold( appBar: new AppBar(), body: new RefreshIndicator( onRefresh: _onRefresh, child: new PageView.builder(
RefreshIndicator
内部实现水平PageView.builder
。若用户滚动到最后,我想刷新并获取新数据,但我试图向下拉以刷新,但指示器并没有出现,新数据也不会被获取。
我该怎么做
return new Scaffold(
appBar: new AppBar(),
body: new RefreshIndicator(
onRefresh: _onRefresh,
child: new PageView.builder(
scrollDirection: Axis.horizontal,
itemCount: a.length,
itemBuilder: (context, index) {
return new Center(
child: Text(a[index].toString()),
);
},
),
)
);
你可以试试这个
int itemCount = 10;
StreamController<bool> streamController = StreamController.broadcast();
void getData() async {
await Future.delayed(Duration(seconds: 1));
itemCount += 10;
streamController.add(false);
}
Widget horizontalList() {
ScrollController scrollController = ScrollController();
return StreamBuilder(
initialData: false,
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (snapshot.hasData) {
if (snapshot.data) {
getData();
}
return Listener(
onPointerMove: (event) async {
scrollController.position.maxScrollExtent;
if (event.delta.dx < 0.0 && scrollController.position.pixels == scrollController.position.maxScrollExtent) {
streamController.add(true);
}
},
child: Stack(alignment: Alignment.center, children: <Widget>[
ListView.builder(
controller: scrollController,
itemCount: itemCount,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext context, int pos) {
return Container(
child: Text('$pos'),
alignment: Alignment.center,
padding: EdgeInsets.all(12.0),
);
}),
snapshot.data ? CircularProgressIndicator() : Container()
],));
}
return Container();
},
stream: streamController.stream.distinct(),
);
}
int itemCount=10;
StreamController StreamController=StreamController.broadcast();
void getData()异步{
等待未来。延迟(持续时间(秒:1));
itemCount+=10;
streamController.add(false);
}
窗口小部件水平列表(){
ScrollController ScrollController=ScrollController();
返回流生成器(
initialData:false,
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData){
if(snapshot.data){
getData();
}
返回侦听器(
onPointerMove:(事件)异步{
scrollController.position.maxScrollExtent;
if(event.delta.dx<0.0&&scrollController.position.pixels==scrollController.position.maxScrollExtent){
streamController.add(true);
}
},
子对象:堆栈(对齐方式:alignment.center,子对象:[
ListView.builder(
控制器:滚动控制器,
itemCount:itemCount,
滚动方向:轴水平,
itemBuilder:(构建上下文,int-pos){
返回容器(
子项:文本(“$pos”),
对齐:对齐.center,
填充:所有边缘设置(12.0),
);
}),
snapshot.data?循环进程指示器():容器()
],));
}
返回容器();
},
stream:streamController.stream.distinct(),
);
}
getData
-只是为了模拟延迟。正如RefreshIndicator
文档所说:“RefreshIndicator只能与垂直滚动视图一起使用”()在这种情况下,有什么方法可以刷新吗?那么,您是否检查了答案,找到了您要查找的内容?没有,但我不再需要实现刷新功能了。谢谢你的帮助!