繁体   English   中英

flutter_bloc/provider RepositoryProvider vs Provider

[英]flutter_bloc/provider RepositoryProvider vs Provider

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

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

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

  • 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 版本 4.1.0 开始,您可以使用context.read<MyObject>()而不是Provider.of<MyObject>(context, listen: false) – 这减少了冗长差异

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM