ПРИЛОЖЕНИЕ ДЛЯ ВХОДА В СИСТЕМУ • Руководство по FLUTTER - BLOCK и FIREBASE для начинающих 🔥

YOUTUBE · 24.11.2025 06:17

Ключевые темы и таймкоды

Введение и цель видео

0:00
  • Приветствие и анонс нового видео о создании системы аутентификации с использованием Flutter, Block и Firebase.
  • Автор упоминает предыдущие видео о Firebase аутентификации и объясняет, почему решил создать отдельное видео для этой темы.
  • Призыв подписаться на канал и оставить лайк.

Подготовка проекта

1:00
  • Описание дизайна экрана приветствия с возможностью входа и регистрации.
  • Создание пустого проекта Flutter и нового проекта Firebase.
  • Использование аутентификации Firebase и базы данных Firestore.

Настройка Firebase

2:55
  • Включение анонимного провайдера и настройка метода входа с использованием электронной почты и пароля.
  • Связывание проекта Firebase с проектом Flutter.
  • Импорт необходимых зависимостей для проекта.

Структура приложения

3:52
  • Создание структуры приложения с папками для пользовательского интерфейса и серверных материалов.
  • Создание папки "пакеты" и подпапок для пользовательского репозитория и моделей.
  • Создание файлов для пользовательского репозитория и моделей.

Создание классов

8:22
  • Создание файлов для пользовательских классов в папке "entities" и "models".
  • Указание имен классов, чтобы избежать конфликтов с классами Firebase.
  • Завершение структуры приложения и подготовка к созданию пользовательских классов.

Создание пользовательского класса

10:04
  • Начинаем с создания пользовательского класса "myuser".
  • Класс расширяется до equitable и импортируется пакет из файла yaml.
  • Определяются параметры класса: идентификатор пользователя, адрес электронной почты и имя.

Конструктор класса

11:04
  • Создается конструктор класса с использованием фигурных скобок.
  • Объясняется, почему использование фигурных скобок делает код более понятным.
  • Вспомогательный метод для перезаписи параметров класса.

Метод copyWith

12:59
  • Создается метод copyWith для создания копии объекта.
  • Метод использует параметр "this" для ссылки на текущий объект.
  • Метод обрабатывает потенциальные нулевые значения параметров.

Методы fromJson и toJson

14:53
  • Создаются методы fromJson и toJson для преобразования объектов.
  • Объясняется необходимость этих методов для работы с базой данных.
  • Методы возвращают объекты myuser entity и myuser соответственно.

Создание пользовательской сущности

17:51
  • Создается пользовательская сущность, расширяющая equitable.
  • Определяются параметры класса: адрес электронной почты и имя.
  • Создаются методы toDocument и fromDocument для преобразования объектов в карту и обратно.

Метод fromDocument

20:23
  • Метод fromDocument преобразует карту из базы данных в объект myuser entity.
  • Объясняется, как метод работает с параметрами класса и возвращает объект myuser entity.

Работа с динамическими данными

20:31
  • Использование строки map для динамических данных из Firestore.
  • Применение параметра идентификатора пользователя к карте.
  • Завершение работы с пользовательской сущностью.

Экспорт и импорт сущностей

21:30
  • Экспорт пользовательской сущности из файла entities.dart.
  • Импорт объектов в файл пользователя.dart.
  • Подготовка к работе с пользовательским репозиторием.

Создание абстрактного класса

22:30
  • Создание абстрактного класса UserRepository.
  • Необходимость реализации класса в другом файле.
  • Разработка методов для работы с пользователями.

Методы для работы с пользователями

23:30
  • Создание методов для регистрации, ввода данных и входа в систему.
  • Импорт пакета аутентификации Firebase.
  • Создание абстрактных методов для пользовательского репозитория.

Реализация методов в UserRepositoryFirebase

24:18
  • Создание UserRepositoryFirebase для реализации методов.
  • Перезапись методов для корректной работы.
  • Создание параметров класса и конструктора для UserRepositoryFirebase.

Настройка параметров и аутентификации

26:14
  • Запрос параметра firebase oath у конструктора.
  • Установка приватного параметра для доступа только внутри класса.
  • Установка аутентификации firebase на переданную или default firebase auth.

Создание пользовательской коллекции

27:09
  • Создание экземпляра коллекции firebase firestore.
  • Импорт cloud firestore и создание потока пользователей.
  • Возврат потока пользователей firebase authentication.

Метод входа в систему

28:58
  • Создание метода входа в систему с try catch и регистрацией ошибок.
  • Использование await для асинхронного выполнения.
  • Вход в систему с электронной почтой и паролем.

Метод регистрации

29:57
  • Создание метода регистрации с try catch и регистрацией ошибок.
  • Создание пользователя с электронной почтой и паролем.
  • Получение идентификатора пользователя и обновление объекта my user.

Метод set пользовательских данных

32:39
  • Создание метода set пользовательских данных.
  • Доступ к коллекции пользователей и установка данных.
  • Преобразование объекта my user в объект myuser entity.

Структура приложения

35:14
  • Инициализация firebase и создание асинхронной основной функции.
  • Импорт firebase core и создание файла app.dart.
  • Создание виджета без сохранения состояния и импорт пользовательского репозитория.

Импорт зависимостей

37:36
  • Импорт пользовательского репозитория в файл app.dart.
  • Указание пути к пользовательскому репозиторию в файле package.yaml.
  • Решение проблемы с аутентификацией firebase и запуск pukit.

Исправление ошибок и настройка пользовательского репозитория

39:18
  • Исправление ошибок в пользовательском репозитории.
  • Комментирование аутентификации Firebase и запуск pub get.
  • Заполнение файла dart в пользовательском репозитории для импорта важных файлов.

Создание блоков и структуры проекта

40:15
  • Создание папок "экраны" и "блоки" в папке lib.
  • Импорт пакетов для создания блоков.
  • Создание блоков аутентификации, входа, регистрации и "мой пользователь".

Настройка событий и состояний

44:06
  • Создание событий для аутентификации пользователя.
  • Импорт и настройка параметров для класса пользователя.
  • Создание состояния аутентификации с перечислением статусов.

Создание блока аутентификации

51:00
  • Создание параметров класса для блока аутентификации.
  • Подписка на потоковую передачу для получения состояния пользователя.
  • Настройка подписки на потоковую передачу и типа пользователя.

Настройка конструктора и состояния

52:23
  • В конструкторе требуется пользовательский репозиторий.
  • Изменено состояние аутентификации на "неизвестно".
  • Пользовательская подписка приравнивается к пользовательскому репозиторию.

Обработка изменений аутентификации

53:23
  • Создан поток для обработки изменений аутентификации пользователя.
  • При смене пользователя для аутентификации создается новое состояние аутентификации.
  • При нулевом значении пользователя выдается сообщение "не прошедшее проверку подлинности".

Создание блока аутентификации

55:10
  • Блок аутентификации выполняется при закрытии блока.
  • Создается приложение.dart с использованием блока аутентификации.
  • Возвращается представление приложения вместо заполнителя.

Настройка главного экрана

56:59
  • Создается виджет без сохранения состояния для главного экрана.
  • Используется блок аутентификации для проверки подлинности пользователя.
  • В зависимости от состояния аутентификации возвращается соответствующий экран.

Проблемы с блокировкой

1:02:48
  • Приложение не запускается корректно.
  • Проверяется провайдер блокировки и хранилище.
  • Исправляются ошибки в блоке аутентификации и состоянии.

Решение проблем с блокировкой

1:05:01
  • Проверяются параметры класса и пользовательский репозиторий.
  • Подписывается на пользователя и добавляется новое изменение пользователя для аутентификации.
  • Исправляется ожидание потока данных пользовательского типа.

Перестройка системы

1:07:28
  • Иногда нужно перестроить систему, чтобы исправить ошибки.
  • Пример с красным фоном и проверкой подлинности.
  • Создание контроллера вкладок для пользовательского интерфейса.

Настройка контроллера вкладок

1:08:28
  • Указание количества вкладок и их типов.
  • Настройка начального индекса и vsync.
  • Создание пользовательского интерфейса и каркаса.

Настройка цветов и темы

1:09:20
  • Создание нескольких цветов для темы.
  • Использование параметра "тема" для изменения цветов.
  • Настройка цветовой схемы и фона.

Создание каркаса и эффектов

1:10:19
  • Создание дочернего элемента для прокрутки.
  • Настройка размера и высоты элемента.
  • Создание эффекта и контейнера.

Настройка украшения и фильтра фона

1:11:18
  • Создание украшения в виде круга.
  • Настройка цвета и формы украшения.
  • Использование фильтра фона для эффекта размытия.

Настройка панели вкладок

1:14:08
  • Выравнивание фона под фильтром фона.
  • Создание виджета выравнивания и контейнера.
  • Настройка высоты и размера элемента.

Создание вкладок и экранов

1:15:49
  • Добавление отступов и панели вкладок.
  • Настройка контроллера и цветов для панели вкладок.
  • Создание экранов для входа и регистрации.

Создание экранов входа и регистрации

1:18:33
  • Создание файлов для экранов входа и регистрации.
  • Настройка параметров виджета для экрана входа.
  • Копирование и вставка параметров для экрана регистрации.

Контроллеры и текстовые поля

1:19:34
  • Контроллеры паролей и электронной почты для текстовых полей.
  • Логическое значение для отображения кругового индикатора прогресса.
  • Значок для отображения пароля и сообщения об ошибке.

Создание пользовательского текстового поля

1:20:25
  • Создание новой папки components и класса "мое текстовое поле".
  • Расширение виджета без сохранения состояния.
  • Добавление параметров для текстового поля.

Перезапись метода сборки

1:21:21
  • Перезапись метода сборки для возврата текстового поля формы.
  • Добавление параметров класса и создание собственного вида украшения.
  • Вызов текстового поля на экране входа в систему.

Проверка электронной почты

1:23:14
  • Проверка подлинности и добавление рамки в верхней части экрана.
  • Импорт значков из Купертино.
  • Использование контроллера для текстовой подсказки и проверки электронной почты.

Проверка пароля

1:25:11
  • Добавление рамки и повторение кода для пароля.
  • Использование регулярного выражения для проверки пароля.
  • Добавление значка префикса и суффикса для пароля.

Создание кнопки входа

1:27:02
  • Создание кнопки входа с разделителем и рамкой.
  • Использование текстовой кнопки с методом onpress.
  • Проверка состояния формы и отображение кнопки или кругового индикатора выполнения.

Экран регистрации

1:29:50
  • Создание блока регистрации и импорт текстового поля.
  • Исправление ошибок и регулярное выражение со специальным символом.

Ошибки и регистрация

1:30:28
  • Обнаружена ошибка с паролем и электронной почтой.
  • Перезагрузка экрана и проверка формы.
  • Создание контроллеров для адреса электронной почты, пароля и имени пользователя.

Логические операции и форма

1:31:34
  • Логические операции для параметров формы.
  • Создание формы с полями для электронной почты и пароля.
  • Проверка пароля и установка значений.

Экран регистрации

1:32:40
  • Создание экрана регистрации с полями для имени и кнопки регистрации.
  • Логика экрана регистрации аналогична экрану входа.
  • Создание блоков для входа и регистрации.

Блоки для входа и регистрации

1:34:03
  • Создание блоков для входа и регистрации.
  • Импорт пользовательского репозитория и создание событий.
  • Обработка ошибок и регистрация пользователей.

Метод "при выходе из системы"

1:39:15
  • Создание метода "при выходе из системы".
  • Импорт блоков для входа и регистрации на другие экраны.
  • Проверка работы блоков и перезагрузка приложения.

Регистрация пользователя

1:41:34
  • На экране регистрации нужно раскомментировать код для обработки события "требуется регистрация".
  • Создается блок прослушивания для события "регистрация прошла успешно".
  • Если регистрация успешна, событие "требуется регистрация" становится ложным, и открывается соответствующий экран.

Вход в систему

1:42:32
  • На экране входа в систему раскомментируется метод для обработки события "вход в систему".
  • Вводятся данные для входа с помощью emailcontroller и passwordcontroller.
  • Проверяется правильность ввода данных и происходит вход в систему.

Проверка подлинности и обновление данных

1:43:25
  • Новый пользователь создается в Firebase.
  • В Firestore сохраняется новый пользовательский класс с идентификатором записи и данными.
  • Приложение переносится на главный экран с помощью поставщика блоков.

Добавление кнопки выхода из системы

1:44:08
  • В блоке "in" используется пользовательский репозиторий для доступа к данным.
  • Добавляется кнопка со значком и методом onpress для выхода из системы.
  • Импортируется пакет для иконок и добавляется событие "выйти из системы".

Проверка работы выхода из системы

1:45:04
  • Перестраивается приложение, и проверяется работа кнопки выхода из системы.
  • Вход в систему и выход из системы работают корректно.
  • Пользователь остается на главном экране после успешного входа или выхода из системы.