我在由PageController管理的PageView中有一系列有状态的小部件。我pageController.jumpToPage(index)用来切换页面。切换页面时,所有状态似乎都在窗口小部件中丢失,就好像是从头开始重新创建时一样。我已经尝试keepPage: true在PageController中使用,但这似乎没有任何效果。这是PageView的预期行为,还是我做错了什么?任何建议表示赞赏,谢谢!
pageController.jumpToPage(index)
keepPage: true
keepPage: true是默认行为;这意味着PageController如果销毁并重新创建页面,它将记住该页面所在的页面。这不是你想要的。
PageController
而是将特定PageStorageKey于页面的内容传递给页面的构造函数。这有助于Flutter为您的页面提供一个独特的存储桶。然后,在您State要恢复到先前状态的状态中,可以使用PageStorage.of(context)获取存储分区,您可以read在更改存储区时将值从in initState和write值更改为。您可以在ExpansionTile中看到一个示例。
PageStorageKey
State
PageStorage.of(context)
read
initState
write