Шаблоны Flutter

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

54min

Введение

Создание приложения для социальной сети может быть сложной задачей, но с помощью Flutter и Back4App вы можете упростить процесс разработки. Этот учебник проведет вас через создание полнофункционального приложения для социальной сети, которое включает аутентификацию пользователей, управление профилями, новостные ленты, связи с друзьями, обмен сообщениями и уведомления.

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

  • Аутентификация пользователей: Безопасные процессы регистрации и входа.
  • Профили пользователей: Редактируемые профили с информацией о пользователе.
  • Новостные ленты: Отображение постов от друзей и пользователя.
  • Связи с друзьями: Возможность отправлять и принимать запросы на добавление в друзья.
  • Обмен сообщениями: Чат в реальном времени между пользователями.
  • Уведомления: Уведомления push для запросов на добавление в друзья, сообщений и взаимодействий с постами.

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

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

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

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

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

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

Bash


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

Bash


1.2. Добавить зависимости

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

YAML


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

Примечание: Мы используем:

  • parse_server_sdk_flutter для интеграции с Back4App.
  • provider для управления состоянием.
  • image_picker для выбора изображений профиля и постов.
  • cached_network_image для эффективной загрузки изображений.
  • firebase_messaging для push-уведомлений.
  • uuid для генерации уникальных идентификаторов.

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

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

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

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

Нам нужно создать несколько классов в Back4App:

  • Пользователь: Встроенный класс для аутентификации пользователей.
  • Профиль: Хранит информацию о профиле пользователя.
  • Пост: Хранит посты пользователей.
  • ЗапросДруга: Управляет запросами на дружбу между пользователями.
  • Сообщение: Хранит сообщения между пользователями.

2.2.1. Класс профиля

  1. Перейдите в раздел "База данных".
  2. Нажмите на "Создать класс".
  3. В модальном окне:
    • Выберите "Пользовательский".
    • Введите "Профиль" в качестве имени класса.
    • Нажмите "Создать класс".

Добавьте следующие столбцы:

  • пользователь: Тип Pointer<_User>
  • имя пользователя: Тип String
  • полное имя: Тип String
  • биография: Тип String
  • фото профиля: Тип File

2.2.2. Класс поста

Создайте "Post" класс со следующими колонками:

  • пользователь: Тип Pointer<_User>
  • содержимое: Тип String
  • изображение: Тип File
  • создано: Тип Date

2.2.3. Класс FriendRequest

Создайте "FriendRequest" класс со следующими колонками:

  • от пользователя: Тип Pointer<_User>
  • к пользователю: Тип Pointer<_User>
  • статус: Тип String (Значения: "ожидание", "принято", "отклонено")

2.2.4. Класс Message

Создайте "Message" класс со следующими колонками:

  • от пользователя: Тип Pointer<_User>
  • к пользователю: Тип Pointer<_User>
  • содержимое: Тип String
  • создано: Тип Date

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

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

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

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

Dart

  • Замените 'YOUR_APPLICATION_ID' и 'YOUR_CLIENT_KEY' на ваши учетные данные Back4App.
  • Мы используем ChangeNotifierProvider для управления состоянием аутентификации.

Шаг 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. Создать сервис профиля

Добавьте файл с именем profile_service.dart в lib/services/:

Dart


5.2. Создать модель профиля

Добавьте файл с именем profile.dart в lib/models/:

Dart


5.3. Создание экрана профиля

Добавьте файл с именем profile_screen.dart в lib/screens/:

Dart


Шаг 6 – Реализация новостных лент

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

Добавьте файл с именем post_service.dart в lib/services/:

Dart


6.2. Создание модели поста

Добавьте файл с именем post.dart в lib/models/:

Dart


6.3. Создать главный экран

Измените home_screen.dart в lib/screens/:

Dart


Шаг 7 – Добавление дружеских связей

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

7.1. Обновите модель данных

Мы уже создали класс FriendRequest в Back4App со следующими колонками:

  • fromUser: Указатель на _User
  • toUser: Указатель на _User
  • status: Строка (Значения: "ожидание", "принято", "отклонено")

Кроме того, нам нужно отслеживать список друзей пользователя. Мы можем сделать это, добавив отношение friends в класс _User.

7.1.1. Добавить отношение друзей в класс пользователя

  1. В Back4App перейдите в класс User.
  2. Нажмите на кнопку "+" для добавления нового столбца.
  3. Назовите столбец "friends" и установите тип на Relation <_User>.

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

Создайте файл с именем friend_service.dart в lib/services/:

Dart


7.3. Обновите пользовательский интерфейс

7.3.1. Добавить экран поиска пользователей

Создайте файл с именем search_users_screen.dart в lib/screens/:

Dart


7.3.2. Экран запросов на добавление в друзья

Создайте файл с именем friend_requests_screen.dart в lib/screens/:

Dart


7.3.3. Обновление навигации на главном экране

В home_screen.dart, добавьте навигацию к экранам поиска пользователей и запросов на добавление в друзья:

Dart


7.4. Обновите новостную ленту, чтобы показать посты друзей

Измените метод getPosts в post_service.dart для получения постов от пользователя и его друзей.

Dart


Шаг 8 – Реализация обмена сообщениями

На этом этапе мы добавим обмен сообщениями в реальном времени между пользователями с использованием Live Queries.

8.1. Включите Live Queries в Back4App

  1. В вашей панели управления приложением Back4App перейдите в Настройки приложения > Настройки сервера.
  2. В разделе URL сервера, запишите ваш URL сервера (например, https://YOUR_APP_NAME.back4app.io).
  3. Live Queries включены по умолчанию в Back4App.

8.2. Настройка Live Queries в Flutter

Пакет parse_server_sdk_flutter включает поддержку Live Query.

8.3. Создание сервиса обмена сообщениями

Создайте файл с именем message_service.dart в lib/services/:

Dart


8.4. Создание модели сообщения

Добавьте файл с именем message.dart в lib/models/:

Dart


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

Добавьте файл с именем chat_screen.dart в lib/screens/:

Dart


8.6. Обновить интерфейс для начала чата

Вы можете начать чат из списка друзей или экрана поиска пользователей.

В списке друзей, при отображении друзей, добавьте кнопку для начала чата:

Dart


Шаг 9 – Добавление push-уведомлений

Реализация push-уведомлений включает в себя настройку Firebase Cloud Messaging (FCM) и интеграцию его с Back4App.

9.1. Настройка Firebase Cloud Messaging

9.1.1. Настройка проекта Firebase

  1. Перейдите на Консоль Firebase и создайте новый проект.
  2. Добавьте Android и/или iOS приложение в ваш проект.
    • Для Android вам нужно имя пакета (applicationId).
    • Для iOS вам нужен идентификатор пакета.

9.1.2. Скачайте файлы конфигурации

  • Для Android: Скачайте google-services.json и поместите его в android/app/.
  • Для iOS: Скачайте GoogleService-Info.plist и добавьте его в ваш проект Xcode в разделе Runner.

9.2. Добавьте firebase_messaging пакет

Убедитесь, что вы добавили firebase_messaging в ваш pubspec.yaml:

YAML


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

9.3. Инициализация Firebase в Flutter

Измените main.dart:

Dart


9.4. Настройка Firebase Messaging

Создайте файл с именем push_notification_service.dart в lib/services/:

Dart


9.5. Обновите main.dart для инициализации Push Notifications

В main.dart, после инициализации Parse, инициализируйте PushNotificationService:

Dart


9.6. Отправка Push Notifications из Back4App

Вы можете отправлять push-уведомления, используя Cloud Code или напрямую с вашего сервера.

9.6.1. Отправка уведомления о запросе на добавление в друзья

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

В friend_service.dart, измените метод sendFriendRequest:

Dart


Примечание: Убедитесь, что вы связали установку с пользователем.

9.7. Связать установку с пользователем

Когда пользователь входит в систему, свяжите его установку с его учетной записью.

В auth_service.dart, после успешного входа:

Dart


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



Заключение

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

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

  • Соединения с друзьями: Реализуйте функционал запросов на добавление в друзья.
  • Обмен сообщениями: Добавьте функции чата в реальном времени с использованием Live Queries.
  • Уведомления: Интегрируйте push-уведомления для вовлечения пользователей.
  • Улучшения интерфейса: Улучшите пользовательский интерфейс и пользовательский опыт.
  • Безопасность: Обеспечьте безопасность данных и конфиденциальность, установив соответствующие ACL в Back4App.

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

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