Как отобразить диалоговое окно подтверждения перед закрытием заставки в формах Xamarin - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над приложением Xamarin.Forms, использующим MVVMCross для Android и iOS, и теперь мне нужно выполнить некоторые проверки на сервере, прежде чем приложение будет полностью загружено, и в результате этих проверок мне потребуется представить диалоговое окно подтвержденияс сообщением пользователю и не позволяющим ему продолжить, прежде чем он примет или отменит диалоговое окно.

Вот код проверки, который мне нужен для работы:

public class App : MvxApplication
{
    public override void Initialize()
    {
        //... a lot of Dependencies registering

        RegisterCustomAppStart<AppStart>();
    }
}

public class AppStart : MvxAppStart
{
    private readonly IMvxLog _log;
    private readonly IMyApiService _apiService;

    public AppStart(IMvxApplication application, IMvxNavigationService navigationService) : base(application, avigationService)
    {
        _log = Mvx.IoCProvider.Resolve<IMvxLog>();
        _apiService = Mvx.IoCProvider.Resolve<IMyApiService>();
    }

    protected override Task NavigateToFirstViewModel(object hint = null)
    {
        //This is all the code I need to make work, all these lines are pseudo code

        //Do my server side validations
        var myObj = await _apiService.staticValidations();

        //Here I need to validate myObj, something like:
        var result = false;

        if(myObj.boolValue) 
        {
             var result = await showConfirmationDialog();

             //result should contains the value depending on user's selection: if pressed cancel or ok button
        }

        //At this point the splashscreen must continue freezed

        if(result)
        {
            var mvxBundle = new MvxBundle(new Dictionary<string, string> {{BaseViewModel.NavigationBarParameter, "false"}});

            await navigation.Navigate(myMainViewModel, mvxBundle);
        }
        else
        {
            //Other things
        }
    }
}

Я пыталсяпоказать диалоговое окно подтверждения с использованием некоторых пакетов nuget, но я получил ошибки, поскольку библиотеки пытаются присоединить представление к стеку навигации, и на данный момент стек навигации еще не инициализирован.

Я буду признателен за вашу помощьна этом

1 Ответ

1 голос
/ 23 сентября 2019

Вы можете разрешить загрузку приложения и создать новую страницу с именем StartupPage, которая имеет такой же фон, как SplashScreen.На этой странице вы можете показать ConfirmationPopup.Если проверка правильна, вы можете переместить пользователя на первую страницу или просто закрыть приложение или закрыть страницу подтверждения, и пользователь будет находиться на начальной странице фонового экрана Splashscreen.

Я полагаю, что вы не будетебыть в состоянии показать диалоговое окно подтверждения на SplashScreen или до запуска вашего приложения.

...