我有一个非常小的应用程序:
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); }
答案 0 :(得分:1)
onData
的{{1}}参数是位置参数,而listen
参数是命名参数。所有参数都是一个,另一个决定了如何传递该参数的参数。
要为命名参数传递参数,必须使用名称,因此您要写onDone
。
要传递位置参数的参数,只需编写值。您不能使用该名称。
因此,要同时调用onDone: () { ... }
,请输入:
listen
传递一个位置自变量和一个名为stream.listen(
(data) { handleData(...); },
onDone: () { handleDone(...); }
);
的命名后缀。