将数据添加到第一个索引后,ListView跳到顶部

时间:2019-02-09 13:12:11

标签: listview dart flutter

我有一个从网站获取评论的应用程序,它的列表视图包含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

0 个答案:

没有答案