如何在CustomScrollView中保持滚动位置

问题描述

我有一个StatelessWidget

class MessagePage extends StatelessWidget {
  MessageProvider provider;
  ScrollController _scrollController = ScrollController();

  MessagePage() {
    _scrollController.addListener(() {
      if (_scrollController.position.maxScrollExtent ==
          _scrollController.position.pixels) {
        if (!isLoading) {
          isLoading = !isLoading;
          provider.getList(id: provider.lastItemVisited);
        }
      }
    });
  }

和提供程序类从Web服务获取数据,然后在ui中显示数据:

ChangeNotifierProvider<MessageProvider>(
          create: (context) => provider,child: Consumer<MessageProvider>(
            builder: (context,value,child) {
              if (value.state == ViewState.IDLE) {
                return CustomScrollView(
                  controller: _scrollController,slivers: <Widget>[
                    SliverPadding(
                      padding: const EdgeInsets.only(
                          left: 28.0,right: 28.0,bottom: 28.0,top: 30),sliver: SliverList(
                        delegate: SliverChildListDelegate(
                          initItems(context,value.messageModels),),],);
              }

用户在列表末尾滑动时,我致电服务,并在获取结果后使用child: Consumer<MessageProvider>(数据并显示SliverList中。

一切都很好,但是问题在这里

当我获得新数据时,我的列表位置排在第一位?如何保留scroll position

我看到了this post,但我听不懂。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...