在Dart中,BLoC模式使用StreamController作为sink来接收输入数据。当然,你可以将它设置为null,但这通常不是一个好的做法,因为你将无法接收到任何输入数据。以下是一个示例,展示如何使用StreamController来实现一个简单的BLoC模式:
import 'dart:async';
class MyBloc {
final _inputController = StreamController();
// Sink用来接收输入数据
Sink get inputSink => _inputController.sink;
// Stream用来输出数据
Stream get outputStream => _inputController.stream;
MyBloc() {
_inputController.stream.listen((data) {
print('Received data: $data');
});
}
void dispose() {
_inputController.close();
}
}
void main() {
final bloc = MyBloc();
// 发送数据到sink
bloc.inputSink.add('Hello');
bloc.inputSink.add('World');
// 监听输出stream
bloc.outputStream.listen((data) {
print('Output data: $data');
});
bloc.dispose();
}
在这个示例中,我们创建了一个名为MyBloc
的BLoC类,它包含了一个StreamController
作为sink来接收输入数据。我们定义了一个getter来获取这个sink,并在类的构造函数中,通过监听sink的stream,打印出接收到的数据。
在main
函数中,我们创建了一个MyBloc
实例,并通过调用inputSink.add
方法,向sink发送数据。然后,我们通过监听outputStream
,打印出接收到的数据。
注意,在使用完BLoC后,我们需要调用dispose
方法来关闭stream和sink,以释放资源。
希望这个示例能够帮助你理解如何使用StreamController作为BLoC的sink来处理输入数据。
上一篇:Bloc的初始状态不再被发出