如何在Flutter中访问父级中的子控件的数据?

时间:2019-07-04 22:59:14

标签: flutter dart inherited-widget

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

对于一个简单的任务,每个选项似乎都显得过分杀伤力。我赞成关键方法,因为它给人一种感觉,它们是针对此类情况创建的。有人对这种情况有更好的了解吗?

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

1 个答案:

答案 0 :(得分:1)

看起来如此困难有一个原因:你不应该。

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

您应该通过继承的部件和类似的模式来“提升状态”,而不是读取后代的状态。