dispose method
Implementation
Future<void> dispose() async {
if (_disposed) return;
WidgetsBinding.instance.removeObserver(this);
for (final subscription in _subscriptions) {
await subscription.cancel();
}
await events.dispose();
_disposed = true;
_initialized = false;
}