繁体   English   中英

为什么我在 Flutter 中需要一个 InheritedWidget

[英]Why do I need an InheritedWidget in Flutter

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

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

From the Flutter API: https://api.flutter.dev/flutter/widgets/BuildContext/findAncestorStateOfType.html

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

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

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

您还可以查看InheritedWidget 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM