Я пытаюсь реализовать страницу входа для приложения MvvmCross-Forms. Когда приложение запускается, пользователю должен быть представлен экран входа в систему, если они не вошли в систему или не отправлены на домашнюю страницу, если они есть. Пользователь переходит на домашнюю страницу при входе в систему и направляется на страницу входа в систему, когда выходит из домашней страницы. Довольно стандартный материал - что вы ожидаете от приложения с аутентификацией.Страница входа с Xamarin MvvmCross-Forms - предотвращение обратной навигации на Android
Я реализовал это с помощью навигации MvvmCross ViewModel, но каждая навигация позволяет пользователю нажимать кнопку «Назад» в строке заголовка на Android или использовать кнопку возврата аппаратного обеспечения. Как пользователь, я бы ожидал, что главная страница после входа в систему станет «корневой» страницей и сможет вернуться к экрану входа в систему, явно решив выйти из системы.
Я понимаю, что типичным способом сделать это в Xamarin Forms было бы создание специального презентатора страниц под проектом Droid, который перехватывает вызовы на Show()
и очищает задний стек при навигации на домашней странице или странице входа (например, верхний ответ для Xamarin MvvmCross Android Prevent Back Button returning to previous View). Тем не менее, похоже, что MvvmCross-Forms преднамеренно мешает вам реализовать эту функциональность - класс MvxFormsDroidPagePresenter
наследует от кросс-платформенной MvxFormsPagePresenter
вместо андроида, специфичного для MvxAndroidViewPresenter
.
Я могу увидеть два варианта - попробуйте использовать один ViewModel/View для входа и домашней страницы или вырвать некоторые из функций MvxAndroidViewPresenter
и поместить их в свой собственный пользовательский презентатор Android. Как это поведение будет реализовано идиоматически в MvvmCross-Forms?
Вы можете попробовать использовать https://github.com/conceptdev/xamarin-forms-samples/tree/master/LoginDemo – Vishnu