public async Task CloseModal(bool animation = false)
        {
            await Device.InvokeOnMainThreadAsync(async() =>
            {
                try
                {
                    Debug.WriteLine($"CloseModal(animation={animation})");

                    Page page = null;
                    if (Device.RuntimePlatform == Device.Android)
                    {
                        page = await _navigation.Navigation.PopModalAsync(false);
                    }
                    else
                    {
                        page = await _navigation.Navigation.PopModalAsync(animation);
                    }

                    if (page != null)
                    {
                        var pageKey = _pagesByKey.First(p => p.Value == page.GetType()).Key;
                        Debug.WriteLine($"CloseModal():PageKey({pageKey})");
                    }

                    CurrentPage = _navigation.CurrentPage;

                    AppStateController.PopViewState();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            });
        }
        public async Task PopToRootAsync()
        {
            await Device.InvokeOnMainThreadAsync(async() =>
            {
                try
                {
                    Debug.WriteLine($"PopToRootAsync()");

                    while (_navigation.Navigation.ModalStack.Any())
                    {
                        await _navigation.Navigation.PopModalAsync(false);
                    }

                    await _navigation.Navigation.PopToRootAsync(false);

                    CurrentPage = _navigation.CurrentPage;

                    AppStateController.ClearNavigationMetaStack();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            });
        }
Esempio n. 3
0
        protected override async void OnStart()
        {
            var result = await DependencyService.Get <IPermissionService>()
                         .CheckPermissions(Permission.Storage);

            if (!result.Any(x => x.Value == PermissionStatus.Granted))
            {
                return;
            }

            //await ClearTablesAsync();
            await CreateTablesAsync();

            var navigationService = SimpleIoc.Default.GetInstance <INavigationService>();
            var navList           = AppStateController.RestoreState();

            AppStateController.ClearNavigationMetaStack();

            foreach (var nav in navList)
            {
                switch (nav.CurrentPage)
                {
                case "MainPage":
                    await navigationService.ReplaceRoot(Locator.Home);

                    break;

                default:
                    break;
                }
            }

            base.OnStart();
        }
Esempio n. 4
0
 protected override void OnResume()
 {
     try
     {
         AppStateController.ResetState();
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex);
     }
 }
        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());
            }
        }
Esempio n. 6
0
        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);
            }
        }