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

问题描述

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

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

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

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

解决方法

这对您来说应该是一个很好的阅读材料: 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);