Я разрабатываю приложение MAUI, которое использует вкладки оболочки наряду с процессом входа в систему. Страница каждой вкладки и соответствующая ViewModel регистрируются как синглтоны. При первоначальной загрузке страницы используют метод OnAppearing для вызова метода инициализации из ViewModel, который извлекает данные из локальной базы данных (с использованием LiteDb) и загружает их в наблюдаемую коллекцию для просмотра пользователем.
Возникла проблема
Приложение позволяет текущему пользователю выйти из системы следующим образом:
Код: Выделить всё
try
{
SecureStorage.Default.RemoveAll(); // Clears the session of the logged-in user
await _repositories.ClearAsync(); // Clears all data created by the current user
await Shell.Current.GoToAsync($"//{nameof(SignInUpPage)}");
}
catch (Exception)
{
Toast.Show("Something went wrong");
}
Вопрос
Как лучше всего обеспечить что эти страницы и модели представления уничтожаются или повторно инициализируются при новом входе в систему? Цель состоит в том, чтобы иметь свежие экземпляры, которые соответствующим образом перезагружают данные, когда пользователь входит в систему после выхода из системы.
Настройка страницы
В MainShellPage.xaml у меня есть следующее:
Код: Выделить всё
Another tabs ..
Если пользователь аутентифицирован, он переходит к:
Код: Выделить всё
await Shell.Current.GoToAsync($"//{nameof(MainShellPage)}")
Код: Выделить всё
await Shell.Current.GoToAsync($"//{nameof(SignInUpage)}")
- решить, что пользователь аутентифицирован
если инициализация данных по умолчанию еще не была выполнена, данные извлекаются из веб-API и сохраняются в локальную базу данных. - если пользователь работал над чем-то, и приложение было закрыто здесь он проверяет наличие кэшированных данных и загружает приложение для продолжения работы.
Подробнее здесь: https://stackoverflow.com/questions/787 ... login-in-a