flutter - 提供商与 Get_it

标签 flutter dependency-injection service-locator flutter-provider

在搜索 Flutter 的依赖注入(inject)解决方案时,我发现了两个很棒的库:providerget_it

据我所知,provider 有更多样板,但它非常适合 Flutter,允许 Consumer 重建部分 Widget 树,一旦注入(inject)的值发生变化。

另一方面,

get_it 更直接、更易于使用,并且不依赖于 Flutter,因此可以与任何 Dart 代码一起使用。

它们之间还有更多的区别和局限吗?我知道这有点自以为是,但 Flutter 太新了,公开登记好处、副作用和陷阱是件好事。

最佳答案

两者的主要区别在于 provider 不是严格的依赖注入(inject)

通过使用小部件,provider 还能够:

  • providers 与 Flutter devtool 兼容
  • 知道何时无法访问变量(作用域为树)
  • 知道何时创建和销毁对象
  • 同步模型 -> 模型和模型 -> UI
  • 仅覆盖特定小部件树的一些值
  • 自愿防止循环依赖

所有这些虽然都是可选的,但从长远来看对您的应用的健康有益。

它确保您始终保持最新状态,让“意大利面条式代码”变得更难,并使您的不同元素更具可组合性。

关于flutter - 提供商与 Get_it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57169616/

相关文章:

flutter - 将抽屉项目图标更改为向右摆动

flutter - 如何在 Flutter 中设置按钮的宽度和高度?

json - 如何在flutter本地化中读取嵌套的json?

swift - Swift 中的简单容器绑定(bind)?

singleton - IOC "child"容器/服务定位器

dart - 将 Widget 与 State 分开

scala - 如何正确绑定(bind)同一服务的多个实现?

c# - 使用 CaSTLe Windsor 在开始新范围时我需要一个对象的新实例

c++ - 服务定位器实现

dependency-injection - Dependency Injection,将一个 "injectable"的对象(服务)注入(inject)到一个newable(实体)中