Создание приложения для чата в реальном времени на Flutter с Back4App
Создание чат-приложения включает в себя управление данными в реальном времени, аутентификацию пользователей, обработку медиа и эффективное хранение данных. В этом учебном пособии вы узнаете, как создать чат-приложение в реальном времени на Flutter, которое поддерживает однонаправленные и групповые беседы, статусы сообщений и обмен медиа. Мы будем использовать Back4App — бэкенд как услугу, работающий на Parse Server, для обработки функциональности бэкенда.
К концу этого учебного пособия у вас будет полностью функциональное чат-приложение со следующими функциями:
- Аутентификация пользователей: Безопасные процессы регистрации и входа.
- Обмен сообщениями в реальном времени: Мгновенная доставка сообщений с использованием Live Queries.
- Присутствие пользователей: Отслеживание статуса онлайн/офлайн пользователей.
- Хранение медиа: Отправка и получение изображений в чатах.
- История сообщений: Сохранение истории чатов для пользователей.
Чтобы следовать этому учебному пособию, вам потребуется:
- Flutter SDK установлен на вашем компьютере. Следуйте за официальным руководством по установке Flutter.
- Базовые знания Flutter и Dart.
- IDE или текстовый редактор такой как Visual Studio Code или Android Studio.
- Parse Server SDK для Flutter добавлен в ваш проект.
Мы создадим чат-приложение с следующими компонентами:
- Аутентификация пользователей: Пользователи могут зарегистрироваться и войти в систему.
- Список контактов: Отображение списка пользователей для общения.
- Экран чата: Интерфейс для обмена сообщениями в реальном времени.
- Обмен медиа: Возможность отправлять и получать изображения.
- Статус онлайн: Отображение статуса онлайн/офлайн пользователей.
Откройте терминал и выполните:
Перейдите в каталог проекта:
Откройте pubspec.yaml и добавьте следующие зависимости:
Запустите flutter pub get для установки пакетов.
- parse_server_sdk_flutter: Взаимодействие с Back4App.
- image_picker: Выбор изображений из галереи или камеры.
- cached_network_image: Эффективная загрузка и кэширование изображений.
- uuid: Генерация уникальных идентификаторов.
- Нажмите на "Создать новое приложение".
- Введите имя для вашего приложения, например, "ChatApp", и нажмите "Создать".
Мы создадим следующие классы:
- Пользователь (Класс Parse по умолчанию): Хранит информацию о пользователе.
- Сообщение: Хранит сообщения чата.
- ЧатКомната: Представляет собой чат между пользователями.
- Поля:
- имя пользователя: String
- пароль: String
- электронная почта: String
- онлайн: Boolean
- аватар: File (Optional)
Класс Пользователь встроен; нам просто нужно убедиться, что у него есть дополнительные поля.
- Поля:
- отправитель: Pointer<_User>
- получатель: Pointer<_User>
- chatRoomId: String
- содержимое: String
- изображение: File (Optional)
- создано: DateTime (Автоматически добавлено)
- Поля:
- chatRoomId: Строка
- users: Массив указателей<_User>
- lastMessage: Строка
- updatedAt: DateTime (Автоматически обновляется)
- Перейдите к Настройки приложения > Безопасность и ключи.
- Запишите ваш Идентификатор приложения и Ключ клиента.
Откройте lib/main.dart и измените его следующим образом:
- Замените 'YOUR_APPLICATION_ID' и 'YOUR_CLIENT_KEY' на ваши фактические учетные данные Back4App.
Создайте новый каталог с именем services в lib и добавьте файл с именем auth_service.dart:
Создайте новую директорию под названием screens в lib и добавьте файлы с именами login_screen.dart и signup_screen.dart.
Создайте метод в AuthService для обновления статуса пользователя онлайн:
Обновите методы входа и выхода:
Создайте user_service.dart в services:
Добавьте следующую зависимость в pubspec.yaml:
Это гарантирует, что у вас есть последняя версия с поддержкой Live Query.
Примечание: Замените 'YOUR_APPLICATION_ID' и 'YOUR_CLIENT_KEY' на ваши реальные ключи.
- Замените 'YOUR_APP' на ваш поддомен приложения Back4App.
- ParseLiveListWidget: Виджет, который слушает обновления живого запроса и перестраивается, когда данные изменяются.
- sendMessage(): Отправляет текстовое сообщение или изображение.
- pickImage(): Использует image_picker для выбора изображения и отправляет его как сообщение.
- setupLiveQuery(): Настраивает живой запрос для прослушивания новых сообщений в чате.
В вашем терминале выполните:
- Откройте приложение на двух устройствах или эмуляторах.
- Зарегистрируйтесь или войдите с разными учетными записями.
- Из одной учетной записи выберите другого пользователя из списка контактов.
- Отправляйте сообщения и изображения; они должны появляться в реальном времени на обоих устройствах.
Поздравляем! Вы создали приложение для чата в реальном времени на Flutter с использованием Back4App. Это приложение поддерживает:
- Аутентификация пользователя: Безопасный вход и регистрация.
- Сообщения в реальном времени: Мгновенные обновления с использованием Live Queries.
- Присутствие пользователя: Отслеживание статуса онлайн/офлайн.
- Обмен медиа: Отправка и получение изображений.
- История сообщений: Сохранение сообщений чата.
- Групповые чаты: Расширьте приложение для поддержки групповых разговоров.
- Статусы сообщений: Реализуйте уведомления о прочтении и индикаторы ввода.
- Push-уведомления: Отправляйте уведомления о новых сообщениях, когда приложение находится в фоновом режиме.
- Аватары: Позвольте пользователям загружать аватары.
- Улучшения безопасности: Защитите данные с помощью ACL и ролей на основе разрешений.
Счастливого кодирования!