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