我有一个从网站获取评论的应用程序,它的列表视图包含initState上的预填充数据。我还提供了一个库来滑动刷新。当我执行“刷新以刷新”时,我正在获取较旧的注释,并将其添加到列表的顶部(索引0),但是我希望用户保持其当前位置。现在,在获取较旧的注释之后,它会跳到更新的注释列表的开始。理想情况下,我希望用户停留在当前位置并向上滚动以查看较早的评论。
示例代码:
ScrollController _scrollController = new ScrollController();
List<String> commentList = new List();
@override
void initState() {
super.initState();
_initListView();
}
_initListView(){
for(int i = 0; i<6; i++){
commentList.add("Test Comment" + i.toString);
}
_loadPreviousPageData(){
await new Future.delayed(new Duration(seconds: 2));
//some http get functionality here
for(int i = 5; i>=0; i--){
setState(() {
commentList.insert(0, "Test Previous Comment: " + index);
});
}
_scrollController.jumpTo(//insert something here);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Expanded(
child: new RefreshIndicator(
onRefresh: _loadPreviousPageData,
child: new ListView.builder(
controller: _scrollController,
itemCount: commentList.length,
itemBuilder: (BuildContext context, int index){
return new Text(commentList[index]);
}
)
)
)
);
}
链接到gif: https://i.imgur.com/pZ8jPwe.gifv