在不使用RxDart的情况下,可以通过StreamController的initialData属性来设置初始值。下面是一个示例代码:
import 'dart:async';
void main() {
final streamController = StreamController.broadcast(
onListen: () {
streamController.add(10); // 设置初始值
},
);
final subscription = streamController.stream.listen((data) {
print('Received: $data');
});
streamController.add(20);
subscription.cancel();
streamController.close();
}
在上面的示例中,我们创建了一个StreamController,并使用broadcast方法创建了一个广播流。在调用onListen回调函数时,我们通过add方法向流中添加了初始值10。
然后,我们创建了一个订阅者来监听流中的数据,并在回调函数中打印接收到的数据。
接着,我们通过add方法向流中添加了另一个值20。
最后,我们取消了订阅并关闭了StreamController。请注意,关闭StreamController将自动关闭流,因此我们不再需要手动关闭流。
运行上面的代码将输出:
Received: 10
Received: 20
这表明初始值10和后续的值20都被正确地发送到了流中。