推荐答案
在 Dart 中,可以通过 listen
方法来监听 Stream
。listen
方法允许你指定一个回调函数,当 Stream
发出数据时,这个回调函数会被触发。你还可以指定 onError
、onDone
和 cancelOnError
等参数来处理错误、完成事件以及是否在发生错误时取消订阅。
-- -------------------- ---- ------- -------------- ------ - -- ---- ------------ -------- -- -------- ------- - -- ---- ------------- --------- -- ------- -- - -- ------ ------------- -- ------- -- -------------- ----- -- ------------ --
本题详细解读
1. listen
方法的基本用法
listen
方法是 Stream
类中的一个核心方法,用于订阅 Stream
并监听其发出的事件。它接受一个回调函数作为参数,这个回调函数会在 Stream
发出数据时被调用。
stream.listen((data) { print('Data: $data'); });
2. 处理错误
listen
方法还允许你通过 onError
参数来处理 Stream
中可能发生的错误。onError
是一个可选参数,接受一个回调函数,当 Stream
发生错误时,这个回调函数会被调用。
stream.listen( (data) { print('Data: $data'); }, onError: (error) { print('Error: $error'); }, );
3. 处理完成事件
onDone
参数用于处理 Stream
完成的事件。当 Stream
关闭时,onDone
回调函数会被调用。
stream.listen( (data) { print('Data: $data'); }, onDone: () { print('Stream is done'); }, );
4. 控制错误处理行为
cancelOnError
参数用于控制当 Stream
发生错误时是否取消订阅。如果设置为 true
,则在发生错误时自动取消订阅;如果设置为 false
,则继续监听 Stream
。
-- -------------------- ---- ------- -------------- ------ - ------------ -------- -- -------- ------- - ------------- --------- -- -------------- ----- --
5. 其他注意事项
listen
方法返回一个StreamSubscription
对象,你可以通过这个对象来手动取消订阅。- 如果你不需要处理错误或完成事件,可以省略
onError
和onDone
参数。
StreamSubscription subscription = stream.listen((data) { print('Data: $data'); }); // 手动取消订阅 subscription.cancel();