在搜索Ffltter的依赖注入解决方案时,我发现了两个非常棒的库:providerget_it.

据我所知,provider有更多的样板,但它非常适合Ffltter,允许Consumer在注入值更改后重新构建Widget树的某些部分.

另一方面,get_it更简单、更容易使用,并且不依赖于Flutter ,因此可以与任何DART代码一起使用.

他们之间还有什么区别和限制吗?我知道这有点固执己见,但Flitter是如此之新,所以最好公开登记其益处、副作用和问题.

推荐答案

两者之间的主要区别在于provider不是strictly dependency injection.

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

  • 提供程序与Flutter 开发工具兼容
  • 知道何时访问变量cannot(作用域为树)
  • 知道何时创建和处置对象
  • synchronize model -> model and model -> UI
  • 仅覆盖特定小部件树的某些值
  • 自愿防止循环依赖

所有这些虽然都是可选的,但从长远来看,对您的应用程序的健康是有好处的.

它确保您始终是最新的,使"意大利面代码"变得更加困难,并使您的不同元素更具可组合性.

Flutter相关问答推荐

类型flatter doctor get zsh:未找到命令:macO中flatter

错误:找不到字体功能类型.Ffltter Google_Fonts包错误

下拉图标未居中

Android上火焰瓷砖之间的线条飘动

如何使用flutter_local_notification包处理通知操作?

Ffmpeg_kit_fltter:^6.0.3版权问题

如何创建这样的按钮

SliverAppbar 呈蓝色

尽管我的 url 链接正确,但 ArgumentError(无效参数:URI 文件中未指定主机:///)错误

Flutter Riverpod 对提供者状态的变化做出react

升级到 Flutter 3.10 后,Flutter 键盘填充不起作用. Flutter 3.10 如何防止 BottomSheet 被键盘覆盖?

Paypal 支付网关添加带有 magento 2 网络详细信息用户名、密码、签名 Magento 2 的 flutter 应用程序?

如何在 Flutter 中测试动画图标

如何从底部导航栏打开 bottomModal 表?

如何在 flutter 中使用 tabbar 作为底部导航栏?

如何在图像上点或(图像的一部分)在 flutter 中点击?

Pub get 尚未运行

如何按值对列表中的 map 进行排序

仅使用 Flutter 在本地环境中托管 Web 服务器

在 Android 12+ 中,REST API 调用在 flutter 中非常慢,在 WiFi 中需要 10 秒,而在移动数据中不到一秒