Дарт: Как я могу получить длину потока? - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу получить длину потока BehaviorSubject, но я не могу его получить.

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

    var act = await subject.stream.length;

    expect(act, 1);
  }); 

Как я могу получить эту длину?

1 Ответ

0 голосов
/ 26 февраля 2019

Длина потока может быть известна только после его закрытия.Пока оно не закрыто, всегда возможно добавление другого события.

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

свойство length

Future<int> length

Количество элементов в этом потоке.

Ожидает все элементы этого потока.Когда этот поток заканчивается, возвращенное будущее завершается с количеством элементов.

Если этот поток выдает ошибку, возвращенное будущее завершается с этой ошибкой, и обработка останавливается.

Эта операцияпрослушивает этот поток, и нераспространенный поток не может быть повторно использован после нахождения его длины.

  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));
  }); 
...