flutter - 使用继承的小部件传递小部件 key

标签 flutter dart provider riverpod

有没有办法通过继承的小部件(provider、riverPod、InheritedWidget 等)传递小部件 key 。

如果是的话,有什么优点和缺点。

我想要做的是使小部件成为常量(在小部件树中)并将 key 作为继承的小部件传递,因为它不能是常量,因为 key 来自对象。

  const MyWidget({
    Key key,
  }):super(key: key);

最佳答案

这对您来说应该是一本很好的阅读 Material : https://medium.com/coding-with-flutter/flutter-global-access-vs-scoped-access-with-provider-8d6b94393bdf

在我看来,使用 InheritedWidget (Provider) 或 Riverpod - 这将是范围访问注入(inject) - 是一个很好的方法。您的替代方案是创建一个全局变量,这是一种不太可测试(或根本不可测试)的方法。

更新:这是将 key 传递给小部件的方式:

MyCustomWidget({
  required this.widgetData
  required final Key key,
}) : super(key: key);

关于flutter - 使用继承的小部件传递小部件 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66304202/

相关文章:

google-chrome - Chrome开发者编辑器无法获取软件包,并且无法运行基本应用

flutter - 如何在 Flutter 中处理堆栈或提供程序架构中的应用程序状态或生命周期

flutter - 如何在我们输入 flutter 的 TextField 小部件时格式化文本?

api - 如何在 Flutter 中存储 API key (2020 年 7 月)

flutter - 如何在不使用 Playstore 或 App Store 的情况下升级我的 Flutter 应用程序?

flutter - Riverpod 提供程序始终为空

android - (最佳)向自定义内容提供者传递控制消息的方法

flutter - 为什么我的翻译系统无法在 flutter 中运行?

arrays - Dart:如何将简单的 map 转换为 dart/flutter 中的列表?

android-studio - SO_REUSEPORT 在编译系统上不可用以在 Ubuntu 上运行 android 模拟器