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
一切都很好,但问题就在这里
当我获得新数据时,我的列表位置会出现在第一个列表中?如何保持滚动位置
我明白了,但我不明白