Inter Widget通讯

时间:2017-06-01 13:51:02

标签: flutter

是否可以通过通知/事件总线等方式进行小部件间通信?

我需要能够告诉一个小部件对另一个小部件发生的事情作出反应,并且不想创建硬链接。

通知监听器只会在窗口小部件树中比两个窗口小部件更高时触发,因此这可能不是一个可行的解决方案。

1 个答案:

答案 0 :(得分:17)

根据您的使用情况,有很多方法可以做到这一点。

您可以将AnimatedWidget作为ValueNotifier传递ChangeNotifierlistenable。您可以在图库animation example中看到此模式。

StreamBuilder上有新事件发生时,您可以使用Stream自动重建小部件。在主要的Flutter仓库中没有很多这样的例子,但是一旦你开始使用插件或进行网络I / O,你就可能需要它。

您可以使用GlobalKey获取currentState并在另一方拥有一个State来电方法。这就是零食栏的工作方式(example)。

您还可以扩展InheritedWidget以向小部件提供未作为构造函数参数传递的信息,并且当信息更改时,它们将自动标记为重建。例如,这就是Theme的工作方式。

如果您可以提供有关您的小部件的功能/他们的关系的更多详细信息,或者理想情况下是一个代码段,我可以帮助您确定哪种方法最适合您的情况。