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

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

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

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

【问题讨论】:

    标签: flutter flutter-provider flutter-bloc


    【解决方案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)——这样可以减少冗长的区别

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 2012-05-07
      • 1970-01-01
      • 2020-11-06
      • 2021-05-23
      • 1970-01-01
      • 2021-01-25
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多