我Provider
用于状态管理和与 UI 分离的业务逻辑。
我在Provider
上面放了一些,MaterialApp
所以可以在应用程序的任何地方访问(例如用户信息)。
但是 您不想将 ChangeNotifierProvider 放置得比必要的高(因为您不想污染范围)。
所以我试着放一些Provider
只在小部件树中的某些页面上使用的东西。
例如,在我的购买项目流程中,我可以拥有:SelectItemPage
=> ConfirmItemPage
=> CheckOutPage
。
但我的问题是Navigator.push()
每次都创建单独的小部件树。因此,如果我在此中初始化 a Provider
,SelectItemPage
则无法在ConfirmItemPage
or中访问CheckOutPage
。
我想Provider
成为这个流程的范围,但我看不出如何。
我该如何解决这个问题?还是我的方法不对?
编辑:我知道我可以使用道具钻孔从SelectItemPage
=> ConfirmItemPage
=>传递数据,CheckOutPage
但这很难维护。我想使用Provider
而不是道具钻孔。