Bloc中的Stream

什么是Stream?

  • Stream 是 Dart 语言中的一个概念,它代表了一系列异步事件的序列。在 Bloc 中,Stream 被用来在数据层和表示层之间传递数据。

如何在 Bloc 中使用 Stream?

  • 在 Bloc 中,通常会创建一个 StreamController 对象来管理一个 Stream。通过 StreamController,我们可以向 Stream 发送新的事件或数据。
// 创建一个 StreamController
StreamController<String> _controller = StreamController<String>();
 
// 向 Stream 发送数据
_controller.sink.add('New data');
 
// 监听 Stream 的数据变化
_controller.stream.listen((data) {
  print(data);
});
 
// 关闭 StreamController
_controller.close();

在 Flutter 中如何使用带有 Stream 的 Bloc?

  • 在 Flutter 应用中,可以将带有 Stream 的 Bloc 注入到 Widget 树中,并通过监听 Bloc 中的 Stream 数据来更新界面。
class MyWidget extends StatelessWidget {
  final MyBloc bloc;
  
  MyWidget({Key key, this.bloc}) : super(key: key);
  
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<String>(
      stream: bloc.stream,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Text(snapshot.data);
        } else {
          return CircularProgressIndicator();
        }
      },
    );
  }
}