1

我想知道父小部件中子(或子的子)小部件中某个字段的值,只有当我想知道它时。
在这种情况下,使用CallbackInheritedWidget/Provider不起作用,因为每次子项中的值发生变化时,它都会为我提供信息。当父母有行动时,我只需要孩子的价值。所以,听所有的变化是一种开销。
另一种选择是使用密钥从孩子那里获取信息,但孩子可以是多个,因此必须创建那么多密钥并以某种方式将它们附加到孩子身上。而且钥匙有点贵。
另一种选择是存储孩子的实例并从中获取价值。

对于一项简单的任务,每个选项似乎都过大了。我赞成关键方法,因为它给人的感觉是它们是为这些类型的场景创建的。有没有人对这种情况有更好的了解?

一个简单的用例是:
想象一个父级在中间有一个 PageView 和一个下一步按钮。中间的页面包含一个更改其值的滑块。当我们按下下一步时,我们想知道滑块的最终值是多少。

4

1 回答 1

1

它看起来如此困难是有原因的:你不应该。

小部件故意非常有限地强制执行单向数据流,这对于大型应用程序的可维护性至关重要。

与其读取后代的状态,不如通过继承的小部件和类似模式“提升状态”。

于 2019-07-04T23:35:34.247 回答