Сегодня я приведу несколько примеров динамической настройки домашней страницы в приложении Flutter. Как вы знаете, у Flutter есть класс виджета MaterialApp для запуска вашего приложения. У этого класса есть свойство с именем home, и вы можете использовать это свойство при создании нового класса. Но если вы по каким-то причинам хотите изменить свой дом при загрузке приложения, как это сделать?

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

В этом посте я приведу пример аутентификации.

Прежде всего, если вы новичок во Flutter, вы можете посмотреть мой старый пост для запуска и создания нового проекта Flutter. Я не буду показывать в этом посте создание нового проекта Flutter. Подумайте о базовом приложении с аутентификацией. Итак, какие страницы должны быть в этом приложении? Ответ - страница входа и домашняя страница. Если пользователь вошел в систему, вам необходимо показать ему домашнюю страницу. В противном случае вам нужно показать страницу входа. Итак, посмотрите в этом списке классы, которые в app.

  • Главная страница
  • Страница авторизации
  • AuthService

У нас 3 класса. Два класса предназначены для страниц, а другой класс - для обслуживания службы аутентификации. В этом посте я подделаю асинхронную функцию. Потому что в этом посте я хочу сосредоточить внимание на изменении домашнего свойства при запуске вашего приложения. Подумайте об основных функциях аутентификации, так что это? Вход и выход из системы (регистрация может быть необязательной, если вы используете Firebase). Итак, класс auth имеет две функции, и эти функции должны быть асинхронными, потому что, если вы хотите войти в систему или выйти из системы, вы должны отправить запрос или вам нужно подождать что-то вроде этого. Давайте посмотрим на диаграмму активности для этого сценария.

Это так просто и понятно для учебника. Пора начинать!

Начнем писать с нашего класса обслуживания auth. Я сказал, что у нас есть два метода: вход в систему и выход из системы в этом классе, и я буду использовать случайный ответ для метода входа, потому что вы знаете, эта функция должна быть истинной или ложной в реальном мире. Я буду использовать недействительный ответ для метода выхода.

Далее создайте мои страницы. Я сказал, что в этом примере у меня две страницы. На странице входа пользователь может войти в приложение, но я хочу использовать случайный результат для входа, потому что вы знаете, что каждый пользователь не может войти в приложение в первый раз. Для этого я использовал библиотеку dart: math в authService и хочу показать тип ответа на странице входа. На домашней странице пользователь может выйти и вернуться на страницу входа.

Да, у нас есть классы страниц и обслуживания для приложения. Итак, пора запускать app. Итак, основная цель будет в файле main.dart, потому что нам нужно дождаться метода входа в систему, в этом случае нам нужно определить домашний виджет приложения на основе результата метода входа в систему. Я буду использовать ключевые слова async и await в этом файле. Эти ключевые слова являются особенностью языка дротиков.

Это все.

Github: https://github.com/anilcancakir/dynamic-home-example-flutter