【发布时间】:2020-01-13 17:09:50
【问题描述】:
我使用Provider 进行状态管理以及将业务逻辑与 UI 分开。
我在MaterialApp 上方放置了一些Provider,以便可以访问应用程序中的任何位置(例如用户信息)。
所以我尝试放置一些Provider,它们仅在小部件树中较低的某些页面上使用。
例如,在我的购买项目流程中,我可以拥有:SelectItemPage => ConfirmItemPage => CheckOutPage。
但我的问题是Navigator.push() 每次都创建单独的小部件树。因此,如果我在 SelectItemPage 中初始化 Provider,则无法在 ConfirmItemPage 或 CheckOutPage 中访问。
我希望 Provider 成为此流程的范围,但我不知道如何。
我该如何解决这个问题? 还是我的方法不对?
编辑:我知道我可以使用道具钻孔来传递来自SelectItemPage => ConfirmItemPage => CheckOutPage 的数据,但这很难维护。我想使用Provider 而不是支柱钻孔。
【问题讨论】:
-
有帮助吗:dev.to/shakib609/…?每个选项卡都根据用户操作获取列表。状态管理和导航也不应该相互影响。
-
@skjagini 感谢您的回复!但你的文章是没有帮助的。它只是在小部件树的顶部初始化 Provider。即使在导航之后,我也希望初始化更低并访问更低。
-
如果您需要跨页面,则需要根级别。如果您不喜欢代码的组织方式,可以查看 Redux 实现,但同样没有其他选择。
标签: flutter dart flutter-provider