首页 > 解决方案 > Flutter 提供者最佳实践

问题描述

我一直在尝试提供程序包,并且通常能够让它做我想做的事情。但是,在某些情况下,我不确定我所做的是否是最佳实践。

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

我的问题是,这些选项中的每一个是否应该有自己的类专用于单个值,以便只有依赖于该单个值的小部件树的部分重建。或者他们应该都在同一个SettingsProvider类中,并且有一些方法可以单独使用这个类中的字段以避免过度重建?

还是我完全错过了大局?任何帮助都会非常感谢!

标签: flutterprovider

解决方案


我发现的一个解决方案是将所有值放在一个类中,例如SettingsProvider. 然后,而不是使用Provider.of<>or 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,
),

这应该显示通知是否打开,并且仅在通知选项更改时重建。

这是提供者文档页面

这是一篇关于Selector

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


推荐阅读