onClose method

  1. @override
void onClose()
override

Called before onDelete method. onClose might be used to dispose resources used by the controller. Like closing events, or streams before the controller is destroyed. Or dispose objects that can potentially create some memory leaks, like TextEditingControllers, AnimationControllers. Might be useful as well to persist some data on disk.

Implementation

@override
void onClose() {
  // .catchError: _bgm.dispose() itself can throw the same way an SFX
  // player's dispose can (see playSfx) — e.g. onClose() running before
  // `_bgm` was ever successfully used lazily constructs it here for the
  // first time, with no guarantee its own creation succeeded.
  unawaited(_bgm.dispose().catchError((_) {}));
  // ENH-79: dispose every pooled/active SFX player — a permanent
  // AudioManager never reaches this in normal app life, but a
  // non-permanent one (test teardown) must not leak the pool's warm
  // instances.
  _sfxPool.disposeAll();
  super.onClose();
}