Flutter 如何在CustomScrollView中保持滚动位置

Flutter 如何在CustomScrollView中保持滚动位置,flutter,flutter-layout,flutter-sliver,scrollcontroller,Flutter,Flutter Layout,Flutter Sliver,Scrollcontroller,我有一个小部件 class MessagePage extends StatelessWidget { MessageProvider provider; ScrollController _scrollController = ScrollController(); MessagePage() { _scrollController.addListener(() { if (_scrollController.position.maxScrollExtent

我有一个小部件

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);
        }
      }
    });
  }
以及一个提供程序类,用于从webservice获取数据,然后在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),
                        ),
                      ),
                    ),
                  ],
                );
              }
ChangeNotifierProvider(
创建:(上下文)=>提供程序,
儿童:消费者(
生成器:(上下文、值、子级){
if(value.state==ViewState.IDLE){
返回自定义滚动视图(
控制器:\ u滚动控制器,
条子:[
填缝料(
填充:仅限常量边设置(
左:28.0,右:28.0,底部:28.0,顶部:30),
银条:银条列表(
委托:SliverChildListDelegate(
initItems(上下文、值、messageModels),
),
),
),
],
);
}
当用户在列表末尾刷卡时,我调用我的服务,得到结果后,我使用此数据
child:Consumer(
),并显示到
SliverList

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

当我获得新数据时,我的列表位置会出现在第一个列表中?如何保持
滚动位置

我明白了,但我不明白