flutter_bloc/provider RepositoryProvider vs Provider

Posted

技术标签:

【中文标题】flutter_bloc/provider RepositoryProvider vs Provider【英文标题】: 【发布时间】:2020-05-22 07:22:24 【问题描述】:

我是 Flutter 新手,目前正在研究 DI。 我正在使用flutter_blocprovider 包。

flutter_bloc 附带 RepositoryProvider,我现在问自己的问题是 Providerprovider 的区别是什么?

RepositoryProvider 存储库有什么特别之处还是只是一种命名策略?

【问题讨论】:

【参考方案1】: RepositoryProvider 不处理更新。 您不能在运行时“更改”存储库。 Provider 确实处理更新(使用 Provider.value)。这意味着如果您在运行时更改对象,那么使用它的小部件将重建。

这种差异会影响生命周期,例如 initState

使用Provider,你必须明确监听对象变化:

void initState() 
  super.initState();
  // will fail if listen: false is not specified
  Provider.of<MyObject>(context, listen: false);

使用RepositoryProvider,您不必关心:

void initState() 
  super.initState();
  RepositoryProvider.of<MyObject>(context);

所以这只是冗长的区别。

事实上,由于Provider version 4.1.0,你可以用context.read&lt;MyObject&gt;()代替Provider.of&lt;MyObject&gt;(context, listen: false)——这样可以减少冗长的区别

【讨论】:

以上是关于flutter_bloc/provider RepositoryProvider vs Provider的主要内容,如果未能解决你的问题,请参考以下文章

V-rep学习笔记:ROSInterface

rep() 每个等于一个向量

8086汇编 rep 指令

8086汇编 rep 指令

按顺序创建重复值序列?

R语言rep函数重复向量或者列表元素实战