我一直在尝试提供程序包,并且通常能够使它完成我想做的事情。但是,在某些情况下,我不确定我的工作是否完全是最佳做法。
例如,假设我有一个设置页面,其中包含各种不相关的选项-例如主题设置选项,通知选项,一些特定于应用程序的过滤器选项等。
我的问题是,这些选项中的每个选项都应具有自己的专用于单个值的类,以便仅依赖于该单个值的窗口小部件树的一部分得以重建。还是应该将它们全部放在同一个SettingsProvider
类中,并且有某种方法可以单独使用此类中的字段,以避免过多的重建?
还是我完全错过了大局?任何帮助将不胜感激!
答案 0 :(得分:0)
我发现的一个解决方案是将所有值放在单个类中,例如SettingsProvider
。然后,代替使用Provider.of<>
或Consumer<>
,
使用Selector<>
。例如,要获取/设置设置的通知选项,可以用Selector
包装小部件,如下所示-
Selector<SettingsProvider, bool>(
builder: (context, notifications, child) {
(notifications)
? return Text('Notifications are on')
: return Text('Notifications are off')
},
selector: (context , settingsPro) => settingsPro.notifications,
),
这应该显示通知是否打开,并且仅在通知选项更改时才重新构建。
Here is an article about Selector
让我知道是否有更好的解决方案。