【问题标题】:Pass widget key with inherited widget使用继承的小部件传递小部件键
【发布时间】:2021-05-24 00:23:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: flutter dart provider riverpod


    【解决方案1】:

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

    【讨论】:

    • 感谢您回答 Alexey,但我想知道如何通过继承的小部件设置小部件键,我想知道除了小部件构造之外的另一种传递键的方式。
    • 据我所知,除非您深入了解 Flutter 框架,否则仅将密钥传递给 widget 超类构造函数会使小部件树接受密钥。我会更新答案。
    • 是否有另一种方法来传递密钥而不是使用小部件构造函数。
    • 没有别的办法。元素层的键操作在Widget类中定义,该类由其他小部件类扩展,因此超类必须通过构造函数中的super调用来接收键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2020-06-04
    • 2018-10-02
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多