Flutter Provider最佳做法

时间:2020-05-16 17:37:02

标签: flutter provider

我一直在尝试提供程序包,并且通常能够使它完成我想做的事情。但是,在某些情况下,我不确定我的工作是否完全是最佳做法。

例如,假设我有一个设置页面,其中包含各种不相关的选项-例如主题设置选项,通知选项,一些特定于应用程序的过滤器选项等。

我的问题是,这些选项中的每个选项都应具有自己的专用于单个值的类,以便仅依赖于该单个值的窗口小部件树的一部分得以重建。还是应该将它们全部放在同一个SettingsProvider类中,并且有某种方法可以单独使用此类中的字段,以避免过多的重建?

还是我完全错过了大局?任何帮助将不胜感激!

1 个答案:

答案 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 the provider doc page

Here is an article about Selector

让我知道是否有更好的解决方案。