首页 > 解决方案 > 完成后重复流

问题描述

你好我在我的应用程序上使用流来获取一些数据。在数据结束时流停止,我想要的是每次流完成时重新开始

  final stream =  Stream.periodic(kDuration, (count) => count)
      .take(kLocations.length);

stream.listen((value) => newLocationUpdate(value)

我搜索了几个小时并没有找到一个好的解决方案

标签: flutterdart

解决方案


.take(kLocations.length)一旦发出了该数量的元素,调用将导致流关闭。例如:

final stream = Stream.periodic(kDuration, (count) => count).take(3);
stream.listen(print);  // prints 0, 1, 2, then stops

相反,如果您希望重复此操作(即发出 0、1、2、0、1、2 等),则可以使用模运算符 ( %):

final stream = Stream.periodic(kDuration, (count) => count % 3);
stream.listen(print);  // prints 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

推荐阅读