首页 > 解决方案 > 如何限制颤动中流的结果计数

问题描述

我正在寻找一种可以限制此类流的结果数量的方法:

return StreamBuilder(
        stream: Global.updatesRef.streamData(),
        builder: (BuildContext context, AsyncSnapshot snap) {
          if (snap.hasError) {
            print(snap.error);
          }
          if (snap.hasData) {
            List<Update> updates = (snap.data)
                .where((item) =>
                    item.status == 'online' &&
                    item.type == 'market' &&
                    item.id != widget.productId)
                .toList();
            if (updates.length > 0) {..

这给了我查询的所有结果,但我想在流中限制这里的计数,只说5 个项目。

我正在使用提供程序来获取 Firestore 数据。因此,提供程序存储与至少目前不需要任何结果计数限制的其他屏幕共享。

因此,如果我可以根据屏幕或小部件来做到这一点,那就太好了。

标签: flutterdart

解决方案


.take(5)在流上使用。.takecount流的第一个数据事件作为新事件返回。

最多提供此流的第一个计数数据事件。

文档:https ://api.dartlang.org/stable/2.7.0/dart-async/Stream/take.html

这是如何工作的示例:

void main() {
  Stream.fromIterable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).take(5).forEach((val) {
    print(val); // prints: 1 2 3 4 5
  });
}

推荐阅读