使用继承的小部件传递小部件密钥

Pass widget key with inherited widget

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

如果是,优缺点是什么

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

  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 - 这将是范围访问注入 - 是一个很好的方法。您的替代方法是制作一个全局变量,这是一种可测试性较差(或根本不可测试)的方法。

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

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