问题描述
有没有办法通过继承的小部件(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);