假设您在这里定义一个流:
Stream<MyUser> user = getStream();
void main() => runApp(MyApp());
Run Code Online (Sandbox Code Playgroud)
现在它可用于触发StatefulWidget更改或与StreamBuilder小部件树中的任何位置一起触发。
class UserProfileState extends State<UserProfile> {
MyUser _user;
@override
initState() {
super.initState();
user.listen((user) => setState(() => _user = user ))
}
}
Run Code Online (Sandbox Code Playgroud)
Flutter 中像这样的全局流/可观察对象是否存在技术问题?我无法在继承的小部件或 redux(要复杂得多)之外找到这种模式的示例。
没有什么可以反对全球流。
通常最好不要直接访问全局流,而是将它们作为服务提供(例如InheritedWidget在 Flutter 中使用),这样依赖关系更容易处理,并且很容易模拟测试。
当您拥有单个流时,Redux 可能比单个流复杂得多。当应用程序增长时,与直接使用流相比,它可能会降低复杂性。
如果单个流有多个侦听器,则可能会出现流的主要问题。
当其他使用者尝试侦听时,单订阅流(默认)会引发异常。
当没有消费者监听时,广播流会丢弃事件。
有关更多详细信息,请参阅https://www.dartlang.org/articles/libraries/broadcast-streams 。
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |