0

我已经开始学习 Flutter 的继承小部件,我有一个问题。如果我们可以从 context.findAncestorOfExactType 获取数据,为什么还需要 InheritedWidget?还有那个 updateShouldNotify ......就像,它在某些条件为真时通知子小部件,并且它们无论如何都会在 InheritedWidget 更改后运行它们的构建方法,因为它是不可变的,我们只能在一些重建中改变它......

4

1 回答 1

0

InheritedWidget 对于构建方法案例更有用。当您想从构建方法中的祖先获取数据时。

来自 Flutter API:https ://api.flutter.dev/flutter/widgets/BuildContext/findAncestorStateOfType.html

这不应该在构建方法中使用,因为如果此方法返回的值发生更改,则不会重新构建构建上下文。一般来说,dependOnInheritedWidgetOfExactType 更适合这种情况。此方法对于以一次性方式更改祖先小部件的状态很有用,例如,使祖先滚动列表将此构建上下文的小部件滚动到视图中,或移动焦点以响应用户交互。

同样,通过执行您提到的操作,您将小部件耦合在一起,这根本不是一个好习惯。众所周知,小部件无需太多修改即可从一个地方移动到另一个地方。

Inherited Widget 提供了许多有用的东西。其中一些东西是非常有用的包,我建议你看看它们。

您还可以查看InheritedWidget 文档

于 2020-12-04T18:52:03.757 回答