diff --git a/lib/app/view/master_detail_page.dart b/lib/app/view/master_detail_page.dart index 6a6bfbd1d..2eb912e69 100644 --- a/lib/app/view/master_detail_page.dart +++ b/lib/app/view/master_detail_page.dart @@ -77,27 +77,25 @@ class MasterDetailPage extends StatelessWidget with WatchItMixin { ), if (context.showMasterPanel) const VerticalDivider(), Expanded( - child: BackGesture( - child: Navigator( - // ignore: deprecated_member_use - onPopPage: (route, result) => route.didPop(result), - key: masterNavigator, - onGenerateRoute: (settings) { - final page = (masterItems.firstWhereOrNull( - (e) => - e.pageId == settings.name || - e.pageId == libraryModel.selectedPageId, - ) ?? - masterItems.elementAt(0)) - .pageBuilder(context); + child: Navigator( + initialRoute: libraryModel.selectedPageId ?? kSearchPageId, + onDidRemovePage: (page) {}, + key: libraryModel.masterNavigatorKey, + observers: [libraryModel], + onGenerateRoute: (settings) { + final page = (masterItems.firstWhereOrNull( + (e) => e.pageId == settings.name, + ) ?? + masterItems.elementAt(0)) + .pageBuilder(context); - return PageRouteBuilder( - pageBuilder: (_, __, ___) => page, - transitionsBuilder: (_, a, __, c) => - FadeTransition(opacity: a, child: c), - ); - }, - ), + return PageRouteBuilder( + settings: settings, + pageBuilder: (_, __, ___) => BackGesture(child: page), + transitionsBuilder: (_, a, __, c) => + FadeTransition(opacity: a, child: c), + ); + }, ), ), ], @@ -146,7 +144,7 @@ class MasterPanel extends StatelessWidget { }, ); } else { - libraryModel.pushNamed(pageId: item.pageId); + libraryModel.push(pageId: item.pageId); } if (!context.showMasterPanel) { diff --git a/lib/common/view/global_keys.dart b/lib/common/view/global_keys.dart index efa1f5c81..458b503df 100644 --- a/lib/common/view/global_keys.dart +++ b/lib/common/view/global_keys.dart @@ -7,4 +7,3 @@ final GlobalKey manualAddNavigatorKey = GlobalKey(); final GlobalKey masterScaffoldKey = GlobalKey(); -final GlobalKey masterNavigator = GlobalKey(); diff --git a/lib/common/view/sliver_audio_page.dart b/lib/common/view/sliver_audio_page.dart index 59532dc6b..1b3096019 100644 --- a/lib/common/view/sliver_audio_page.dart +++ b/lib/common/view/sliver_audio_page.dart @@ -66,7 +66,7 @@ class SliverAudioPage extends StatelessWidget { padding: appBarSingleActionSpacing, child: SearchButton( onPressed: () { - di().pushNamed(pageId: kSearchPageId); + di().push(pageId: kSearchPageId); final searchModel = di(); if (searchModel.audioType != AudioType.local) { searchModel diff --git a/lib/library/library_model.dart b/lib/library/library_model.dart index 323806976..ca136c2f7 100644 --- a/lib/library/library_model.dart +++ b/lib/library/library_model.dart @@ -4,11 +4,11 @@ import 'package:flutter/material.dart'; import 'package:safe_change_notifier/safe_change_notifier.dart'; import '../common/data/audio.dart'; -import '../common/view/global_keys.dart'; +import '../common/logging.dart'; import '../constants.dart'; import 'library_service.dart'; -class LibraryModel extends SafeChangeNotifier { +class LibraryModel extends SafeChangeNotifier implements NavigatorObserver { LibraryModel(this._service); final LibraryService _service; @@ -16,7 +16,6 @@ class LibraryModel extends SafeChangeNotifier { Future init() async { await _service.init(); - _pageIdStack.add(_service.selectedPageId ?? kSearchPageId); _propertiesChangedSub ??= _service.propertiesChanged.listen((_) => notifyListeners()); @@ -110,7 +109,7 @@ class LibraryModel extends SafeChangeNotifier { playlists.entries.elementAt(index).value.toList(); List