flutter - 小部件间通信

标签 flutter

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

我需要能够告诉一个小部件对另一个小部件中发生的事情使用react,并且不想创建硬链接(hard link)。

仅当它在小部件树中高于两个小部件时才会触发通知监听器,因此这可能不是一个可行的解决方案。

最佳答案

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

你可以让他们成为 AnimatedWidget通过 ValueNotifier 的 s或 ChangeNotifier作为 listenable .您可以在 Gallery 的 animation example 中看到这种模式。 .

您可以使用 StreamBuilder让您的小部件在 Stream 上出现新事件时自动重建.在 Flutter 主代码库中并没有很多这样的示例,但是一旦您开始使用插件或进行网络 I/O,您可能会需要它。

您可以使用 GlobalKey获取 currentState并且在另一个上有一个 State 调用方法。这就是 snackbar 的工作原理 (example)。

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

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

关于flutter - 小部件间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44309424/

相关文章:

flutter - 如何将颜色组合在一起,就像将一种颜色绘制到另一种颜色上一样?

json - 如何通过传递变量(参数)获取api数据?

flutter - Flutter 中的嵌套路由浏览器 URL

typescript - Dart 中的 Crypto.subtle?

flutter/Dart : Subclass a freezed data class

firebase - 如何避免竞争条件?

firebase - Flutter firestore获取嵌套集合所有数据

flutter - ElevatedButton、TextButton 和 OutlinedButton 渐变

flutter - 在 Flutter 中点击另一个项目 ListView 后如何取消选择已经选择的项目?

flutter - 断言失败 : line 5143 pos 16: 'child is! ParentDataElement<ParentData>' : is not true