Dart 流监听未按预期工作

标签 dart stream

第一次使用 Dart 流。在下面的代码中,在 VSCODE 中单步执行时,会从转换结果跳转到最后的括号。它似乎没有执行任何监听回调。我该如何解决这个问题?

Future<void> addListsFileToDb(File file) async {
file.openRead().transform(utf8.decoder).listen(
    (String value) => print(value),
    onError: (error) => print(error),
    onDone: () => print("done"));}

最佳答案

流(如 future )是异步的。当您调用 listen ,您告诉流开始工作,并设置一些回调以在流具有可用值时被调用……然后就完成了。
稍后,根据流在做什么,可能更晚,流将生成它的第一个值。此时它将生成一个数据事件,该事件将调用数据回调/处​​理程序(此处为 (String value) => print(value))。
在那之前,程序继续正常执行,所以跳到 listen 的末尾。立即调用是正确且预期的行为,listen call 立即完成,还没有调用任何回调。

关于Dart 流监听未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64348381/

相关文章:

Flutter 和 Angular Dart 都共享组件模式,但是这两个框架之间的一个根本区别是什么?

java - 在 Java 中将 StreamWriter 转换为 OutputStream?

安卓。 System.out.println() 不起作用。正确的写作方法是什么?

java - Instant.readObject 方法 "Defend[s] against malicious streams"是什么意思?

dart - 如何基于组件调用模板中的函数?

asynchronous - Flutter DropdownButton - 从 rest webservice 填充项目

flutter - VSCode dart代码自动完成不适用于软件包

java - 优化使用数据压缩的 Java 服务器

javascript - 如何让双工流等到完成事件才开始发送数据?

flutter - 如何从父级窗口小部件或其他 future builder 外部访问 future builder 中的功能