2016-07-11 4 views
2

Я хочу пропустить страницу входа в систему, если в локальном хранилище есть токен, но я не хочу переместить логику на App, потому что я хочу, чтобы LoginPage оставался моей базовой страницей. В настоящее время у меня есть этот код, и он работает.Где я должен вводить навигационный код?

public LoginPage() 
{ 
    InitializeComponent(); 
} 

protected override void OnAppearing() 
{ 
    var localStorage = new LocalStorage(); 
    if (!string.IsNullOrEmpty(localStorage.Get("key"))) 
    { 
     Navigation.PushAsync(new MainTabbedPage(true)); 
    } 

    base.OnAppearing(); 

    // some unrelated code... 
} 

Проблема с ним в том, что иногда (довольно часто), страница Войти видна на долю секунды, пока он не переходит к MainTabbedPage. Могу ли я ввести код навигации от OnAppearing к конструктору страницы? Если да, я должен положить его до или после InitializeComponent();? Обратите внимание, что некоторое время в приложении я мог бы позвонить PopToRootAsync(), чтобы вернуться на страницу входа в систему, которая на этот раз я могу отобразить.

Кроме того, скажите, пожалуйста, что-то не так с этим подходом.

Заранее спасибо.

+0

Если бы мой ответ был прав и помог вам решить проблему, пожалуйста, отметьте его как правильную. –

ответ

2

Я настоятельно рекомендую создать заставку. Таким образом, вы можете иметь минимальное время до того, как следующий экран отобразит и выполнит задания. Пока отображается экран заставки, проверьте, действителен ли токен пользователя, а затем перейдите к отображению экрана входа в систему или любого другого экрана, который вы хотите отобразить. Скажите, пожалуйста, если вам нужна дополнительная помощь.

+0

звучит как отличная идея, однако я также хотел бы узнать ответ на мой вопрос. Если ничего другого, я буду придерживаться вашего решения. – nicks

+0

Я немного смущен, что вы подразумеваете под «вопросом». Я думал, что ответил на это, но если не просьба просто прокомментировать, что бы вы хотели, чтобы я ответил. :) –

+0

Могу ли я поместить код навигации из «OnAppearing» в конструктор страницы? Если да, я должен положить его до или после 'InitializeComponent();'? Обратите внимание, что некоторое время в приложении я мог бы вызвать 'PopToRootAsync()', чтобы вернуться на страницу входа в систему, которая на этот раз я могу отобразить. – nicks

Смежные вопросы