pause 抽象方法
- [Future<
void> ? resumeSignal]
请求使流暂停事件,直到进一步的通知。
暂停期间,订阅将不会触发任何事件。如果它从其源接收事件,它们将被缓存在订阅恢复为止。对于非广播流,底层源头通常会收到暂停的通知,因此它可以停止生成事件,直到订阅恢复。
为了避免在广播流中缓冲事件,如果中间的事件不重要,最好取消此订阅,并在需要事件时再次开始监听。
如果提供了 resumeSignal
,则在 futures 完成(仿佛通过调用 resume)时,流订阅将撤销暂停。如果 futures 完成错误,流将继续恢复,但错误将被认为是未处理的并且传递到 Zone.handleUncaughtError。
调用 resume 也会撤销暂停。
如果订阅暂停多次,则需要执行相同数量的恢复以恢复流。调用 resume 和 resumeSignal
的完成是可互换的 - 传递了 resumeSignal
的 pause 可以通过调用 resume 来结束,完成 resumeSignal
则可以结束不同的 pause。
即使订阅没有被暂停,也可以安全地调用 resume 或完成一个 resumeSignal
,并且恢复将没有任何效果。
实现
void pause([Future<void>? resumeSignal]);