flutter - 当在Stream上使用Distinct()时似乎无法过滤出相同的结果

标签 flutter asynchronous dart stream iterable

请看一下这段代码=>

void main() async {
  Stream<int> _intStream() async* {
    for (int i = 0; i < 10; i++) yield i;
  }

  Stream<int> _even() => _intStream().where((int i) => i % 2 == 0);
  Stream<bool> _isEven(Stream<int> stream) => stream.map((int i) => i % 2 == 0);

  print('test 1: should print 5 [true] and 5 [false] alternate');
  await for (bool b in _isEven(_intStream())) {
    print('test 1: $b');
  }

  print('test 2: should print 5 [true]');
  await for (bool b in _isEven(_even())) {
    print('test 2: $b');
  }

  print('test 3: should print ONLY ONE [true]');
  await for (bool b in _isEven(_even().distinct())) {
    print('test 3: $b');
  }
}
我使用distinct()的方式错误吗?
先感谢您

最佳答案

没关系,我只是把错误放在错误的地方,
以下作品按预期进行

void main() async {
  Stream<int> _intStream() async* {
    for (int i = 0; i < 10; i++) yield i;
  }

  Stream<int> _even() => _intStream().where((int i) => i % 2 == 0);
  Stream<bool> _isEven(Stream<int> stream) => stream.map((int i) => i % 2 == 0);

  print('test 1: should print 5 [true] and 5 [false] alternate');
  await for (bool b in _isEven(_intStream())) {
    print('test 1: $b');
  }

  print('test 2: should print 5 [true]');
  await for (bool b in _isEven(_even())) {
    print('test 2: $b');
  }

  print('test 3: should print ONLY ONE [true]');
  await for (bool b in _isEven(_even()).distinct()) {
    print('test 3: $b');
  }
}

关于flutter - 当在Stream上使用Distinct()时似乎无法过滤出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63563185/

相关文章:

dart - 在 flutter 中将按钮添加到 ListView 小部件的底部

c# - 如何在 C# 中异步提取 zip 文件以不阻塞 UI?

javascript - 迭代地读取和处理 chrome.storage 中的对象

api - 执行 POST 请求时出现 CERTIFICATE_VERIFY_FAILED 错误?

dart - ClassName method() => ClassName() 在 Dart 中是什么意思?

flutter - 如何使用 flutter Bloc 模式实现 WEBRTC

android - Flutter 应用程序在使用 flutter_driver 运行时无法加载 Json 文件

ios - 如何在返回值之前等待关闭完成

flutter - 从较低级别的小部件更新较高级别的小部件状态

firebase - 在 Flutter 中收听 Firestore 集合及其子集合