Шаблоны Flutter

Создание приложения для чата в реальном времени на Flutter с Back4App

36min

Введение

Создание чат-приложения включает в себя управление данными в реальном времени, аутентификацию пользователей, обработку медиа и эффективное хранение данных. В этом учебном пособии вы узнаете, как создать чат-приложение в реальном времени на Flutter, которое поддерживает однонаправленные и групповые беседы, статусы сообщений и обмен медиа. Мы будем использовать Back4App — бэкенд как услугу, работающий на Parse Server, для обработки функциональности бэкенда.

К концу этого учебного пособия у вас будет полностью функциональное чат-приложение со следующими функциями:

  • Аутентификация пользователей: Безопасные процессы регистрации и входа.
  • Обмен сообщениями в реальном времени: Мгновенная доставка сообщений с использованием Live Queries.
  • Присутствие пользователей: Отслеживание статуса онлайн/офлайн пользователей.
  • Хранение медиа: Отправка и получение изображений в чатах.
  • История сообщений: Сохранение истории чатов для пользователей.

Предварительные требования

Чтобы следовать этому учебному пособию, вам потребуется:

  • Flutter SDK установлен на вашем компьютере. Следуйте за официальным руководством по установке Flutter.
  • Базовые знания Flutter и Dart.
  • IDE или текстовый редактор такой как Visual Studio Code или Android Studio.
  • Аккаунт Back4App. Зарегистрируйтесь для получения бесплатного аккаунта на Back4App.
  • Parse Server SDK для Flutter добавлен в ваш проект.

Обзор

Мы создадим чат-приложение с следующими компонентами:

  • Аутентификация пользователей: Пользователи могут зарегистрироваться и войти в систему.
  • Список контактов: Отображение списка пользователей для общения.
  • Экран чата: Интерфейс для обмена сообщениями в реальном времени.
  • Обмен медиа: Возможность отправлять и получать изображения.
  • Статус онлайн: Отображение статуса онлайн/офлайн пользователей.

Шаг 1 – Настройка проекта Flutter

1.1. Создание нового проекта Flutter

Откройте терминал и выполните:

Bash


Перейдите в каталог проекта:

Bash


1.2. Добавление зависимостей

Откройте pubspec.yaml и добавьте следующие зависимости:

YAML


Запустите flutter pub get для установки пакетов.

  • parse_server_sdk_flutter: Взаимодействие с Back4App.
  • image_picker: Выбор изображений из галереи или камеры.
  • cached_network_image: Эффективная загрузка и кэширование изображений.
  • uuid: Генерация уникальных идентификаторов.


Шаг 2 – Настройка Back4App

2.1. Создание нового приложения Back4App

  1. Войдите в вашу панель управления Back4App.
  2. Нажмите на "Создать новое приложение".
  3. Введите имя для вашего приложения, например, "ChatApp", и нажмите "Создать".

2.2. Настройка классов и модели данных

Мы создадим следующие классы:

  1. Пользователь (Класс Parse по умолчанию): Хранит информацию о пользователе.
  2. Сообщение: Хранит сообщения чата.
  3. ЧатКомната: Представляет собой чат между пользователями.

2.2.1. Класс пользователя

  • Поля:
    • имя пользователя: String
    • пароль: String
    • электронная почта: String
    • онлайн: Boolean
    • аватар: File (Optional)

Класс Пользователь встроен; нам просто нужно убедиться, что у него есть дополнительные поля.

2.2.2. Класс Сообщение

  • Поля:
    • отправитель: Pointer<_User>
    • получатель: Pointer<_User>
    • chatRoomId: String
    • содержимое: String
    • изображение: File (Optional)
    • создано: DateTime (Автоматически добавлено)

2.2.3. Класс ЧатКомната

  • Поля:
    • chatRoomId: Строка
    • users: Массив указателей<_User>
    • lastMessage: Строка
    • updatedAt: DateTime (Автоматически обновляется)

2.3. Получение учетных данных приложения

  1. Перейдите к Настройки приложения > Безопасность и ключи.
  2. Запишите ваш Идентификатор приложения и Ключ клиента.

Шаг 3 – Инициализация Parse в вашем приложении Flutter

Откройте lib/main.dart и измените его следующим образом:

Dart

  • Замените 'YOUR_APPLICATION_ID' и 'YOUR_CLIENT_KEY' на ваши фактические учетные данные Back4App.

Шаг 4 – Реализация аутентификации пользователей

4.1. Создание службы аутентификации

Создайте новый каталог с именем services в lib и добавьте файл с именем auth_service.dart:

Dart


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

Создайте новую директорию под названием screens в lib и добавьте файлы с именами login_screen.dart и signup_screen.dart.

4.2.1. Экран входа

Dart


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

Dart


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

5.1. Обновить статус пользователя онлайн

Создайте метод в AuthService для обновления статуса пользователя онлайн:

Dart


5.2. Установить статус онлайн при входе и выходе

Обновите методы входа и выхода:

Dart


Шаг 6 – Отображение списка контактов

6.1. Создание сервиса пользователя

Создайте user_service.dart в services:

Dart


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

Dart


Шаг 7 – Реализация обмена сообщениями в реальном времени с помощью живых запросов

7.1. Настройка клиента живого запроса

Добавьте следующую зависимость в pubspec.yaml:

YAML


Это гарантирует, что у вас есть последняя версия с поддержкой Live Query.

7.2. Инициализация Live Query в main.dart

Dart


Примечание: Замените 'YOUR_APPLICATION_ID' и 'YOUR_CLIENT_KEY' на ваши реальные ключи.

  • Замените 'YOUR_APP' на ваш поддомен приложения Back4App.

7.3. Создать экран чата

Dart


Объяснение

  • ParseLiveListWidget: Виджет, который слушает обновления живого запроса и перестраивается, когда данные изменяются.
  • sendMessage(): Отправляет текстовое сообщение или изображение.
  • pickImage(): Использует image_picker для выбора изображения и отправляет его как сообщение.
  • setupLiveQuery(): Настраивает живой запрос для прослушивания новых сообщений в чате.

Шаг 8 – Тестирование приложения

8.1. Запустите приложение

В вашем терминале выполните:

Bash


8.2. Тестирование сообщений

  • Откройте приложение на двух устройствах или эмуляторах.
  • Зарегистрируйтесь или войдите с разными учетными записями.
  • Из одной учетной записи выберите другого пользователя из списка контактов.
  • Отправляйте сообщения и изображения; они должны появляться в реальном времени на обоих устройствах.

Заключение

Поздравляем! Вы создали приложение для чата в реальном времени на Flutter с использованием Back4App. Это приложение поддерживает:

  • Аутентификация пользователя: Безопасный вход и регистрация.
  • Сообщения в реальном времени: Мгновенные обновления с использованием Live Queries.
  • Присутствие пользователя: Отслеживание статуса онлайн/офлайн.
  • Обмен медиа: Отправка и получение изображений.
  • История сообщений: Сохранение сообщений чата.

Следующие шаги

  • Групповые чаты: Расширьте приложение для поддержки групповых разговоров.
  • Статусы сообщений: Реализуйте уведомления о прочтении и индикаторы ввода.
  • Push-уведомления: Отправляйте уведомления о новых сообщениях, когда приложение находится в фоновом режиме.
  • Аватары: Позвольте пользователям загружать аватары.
  • Улучшения безопасности: Защитите данные с помощью ACL и ролей на основе разрешений.

Дополнительные ресурсы

Счастливого кодирования!