无法在监听器中调用onData

时间:2019-07-11 13:54:01

标签: dart

我有一个非常小的应用程序:

main() async
 {
  Stream stream = Stream.fromIterable([1,2,3,4]);

  stream.listen(
    (d) { print(d); },
    onDone: () { print("all done"); }
  );
 }

我不明白为什么我不能像onData那样打电话给onDone

onData: (d) { print(d); }

Docs

1 个答案:

答案 0 :(得分:1)

onData的{​​{1}}参数是位置参数,而listen参数是命名参数。所有参数都是一个,另一个决定了如何传递该参数的参数。

要为命名参数传递参数,必须使用名称,因此您要写onDone

要传递位置参数的参数,只需编写值。您不能使用该名称。

因此,要同时调用onDone: () { ... },请输入:

listen

传递一个位置自变量和一个名为stream.listen( (data) { handleData(...); }, onDone: () { handleDone(...); } ); 的命名后缀。