private void SavePreviousPageState(string pageKey) { Debug.WriteLine($"SavePreviousPageState(pageKey={pageKey})"); if (string.IsNullOrEmpty(pageKey)) { AppStateController.SaveViewState(((IContentPage)_navigation.CurrentPage)?.OnSleep()); } else { var page = _navigation.Navigation.ModalStack.FirstOrDefault(x => x.GetType() == _pagesByKey[pageKey]); AppStateController.SaveViewState(((IContentPage)page)?.OnSleep()); } }
protected override void OnSleep() { try { if (((MasterDetailPage)Application.Current.MainPage).Detail is NavigationPage navigation) { AppStateController.SaveViewState(navigation.Navigation.ModalStack.Any() ? ((IContentPage)navigation.Navigation.ModalStack.Last()).OnSleep() : ((IContentPage)navigation.Navigation.NavigationStack.Last()).OnSleep()); AppStateController.SaveFinalState(); } } catch (Exception ex) { Debug.WriteLine(ex); } }