use to listen when the controller was deleted from memory
@override @mustCallSuper FutureOr<void> dispose() { super.dispose(); clearListeners(); }