根据我创建广播流/ streamController的方式,结果不一样。

使用StreamController.broadcast()

final sc = StreamController.broadcast();
final stream = sc.stream;
print(stream.isBroadcast);
stream.length.then(print);
stream.length.then(print);
sc..add('')..close();
stream.length.then(print);
stream.length.then(print);

我得到输出:

true
c0
d0
a1
b1

使用StreamController.stream.asBroadcastStream()

final sc = StreamController();
final stream = sc.stream.asBroadcastStream();
print(stream.isBroadcast);
stream.length.then(print);
stream.length.then(print);
sc..add('')..close();
stream.length.then(print);
stream.length.then(print);

我得到输出:

true
a1
b1
c1
d1

如何解释这些差异?

(我在DartPad SDK 2.0.0上做了这个测试)

  ask by Alexandre Ardhuin translate from so

本文未有回复,本站智能推荐:

2回复

如何在Flutter项目中合并两个firestore查询以及如何从这两个流中删除重复的文档?

我需要在我的颤振项目中组合两个 firestore 查询流。 我该怎么做? 我尝试了 StreamZip([Stream1, stream2]) 方法来组合流,它对我有用。 但流可能包含相同的文档。 所以当我列出它们时,所有的文件都列出来了,甚至还有一个副本。 如何从这两个流中删除重复的文档?
1回复

将两个流列表合并为一个

Stream<List> get userAllPost => Rx.combineLatest3(adminpost(), checkFollower(),userStream() ,(Lista,List b,Listc) { List k = []; b.map((e) =
2回复

将两个流合并为一个StreamProvider

我有两个流: Stream<FirebaseUser> FirebaseAuth.instance.onAuthStateChanged Stream<User> userService.streamUser(String uid) 我的 userService 需要经过
1回复

在Streambuilder中合并两个流并返回一个ListView(Flutter)

我正在尝试将来自两个不同集合的两个流(第一个是 'avvenimenti' ,第二个是 'prospettive' )合并到一个返回一个 ListView 的 StreamBuilder 中。 我尝试了很多选项(使用 Rx、StreamBuilder 返回一个返回 ListView 的 StremB
3回复

如何使Websocket流广播到许多其他页面?

我有一个正在监听的 websocket 流: 但是,当再次进入该页面时,出现错误提示: Bad state: Stream has already been listened to.错误Bad state: Stream has already been listened to. 如何使它成为广播而
1回复

为什么这个Dart广播流不接受多个监听呼叫

import 'dart:async';void main() { var dog = new Dog(); showTheDogACat(dog); print('outside'); dog.bark();}class Cat{ void runAway(msg){ print(
1回复

Dart流中listen和forEach有什么区别?

如果我有Dart Stream ,我可以同时使用listen和forEach ,但我不明白其中的区别。 例如,考虑以下代码: 我也可以写: 有什么区别吗?
1回复

Flutter合并两个Stream>进入单个流>

有一个我无法解决的问题,目前我有一个 Stream<List<SupplyHierarchy>> get suppliesHierarchyFinalLevel => _supplyHierarchyFinalLevelFetcher.stream; Stream&