onDispose method

System<State, Event> onDispose({
  1. required void run(),
})

Add code block that tied with running system's disposer.

It will register a dispose callback into system, this callback will be invoked right after running system dispose.

Usage Example


final controller = SomeController(); // somewhere within same scope

...

system
  ...
  .onDispose(
    run: () => controller.dispose(),
  )
  ...

Above code will dispose controller if system is disposing.

Implementation

System<State, Event> onDispose({
  required void Function() run
}) => copy((localRun) => ({reduce, effect, interceptor}) {
  final disposer = Disposer(run);
  final sourceDisposer = localRun(reduce: reduce, effect: effect, interceptor: interceptor);
  return Disposer(() {
    sourceDisposer();
    disposer();
  });
});