actually dispose resources called in dispose() after isDisposed check
@override Future<void> performDispose() async { changeNotifier.removeListener(listener); }