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() {
  if (!_scrollDisposed) {
    _scrollDisposed = true;
    // Safely remove listener and dispose
    try {
      // Check if has clients before removing listener
      if (scroll.hasClients) {
        scroll.removeListener(_listener);
      }
      scroll.dispose();
    } catch (e) {
      // Catch any disposal errors to prevent blocking other cleanup
      Jet.log('Error disposing scroll controller: $e', isError: true);
    }
  }
  super.onClose();
}