Dart:如何获取Stream的长度?

时间:2019-02-26 11:44:37

标签: dart rxdart

我想获取BehaviorSubject的流的长度,但我无法获取。

test('get stream length', ()async{
    BehaviorSubject<int> subject = new BehaviorSubject(seedValue: 0);

    var act = await subject.stream.length;

    expect(act, 1);
  }); 

如何获得这个长度?

1 个答案:

答案 0 :(得分:0)

流的长度只有在关闭后才能知道。只要它没有关闭,总是有可能会添加另一个事件。

https://api.dartlang.org/stable/2.1.1/dart-async/Stream/length.html

  

length属性

     

Future<int> length

     

此元素的数量   流。

     

等待此流的所有元素。当此流结束时,   返回的future由元素数量完成。

     

如果此流发出错误,则返回的Future将完成   该错误,然后处理停止。

     

此操作侦听此流和非广播流   找到长度后便无法再使用。

  test('get stream length', ()async{
    BehaviorSubject<int> subject = new BehaviorSubject(seedValue: 0);

    var actFuture = await subject.stream.length;
    await subject.close();

    expect(actFuture, completion(equals(1));
  });