runPausable<T> method
Performs the following actions:
- Adds a pause handler
onPause - Adds a resume handler
onResume - Executes the
actionfunction - Removes a pause handler
onPause - Removes a resume handler
onResume
The onPause handler function should initiate the pause procedure
which pauses the execution of the action function.
The onResume handler function should initiate the resume procedure
which resume the execution of the action function.
Implementation
Future<T> runPausable<T>(
FutureOr<void> Function() onPause,
FutureOr<void> Function() onResume,
FutureOr<T> Function() action,
) async {
final zone = Zone.current;
_onPause[onPause] = zone;
_onResume[onResume] = zone;
try {
return await action();
} finally {
_onPause.remove(onPause);
_onResume.remove(onResume);
}
}