フラッター テンプレート

FlutterとBack4Appを使用したリアルタイムチャットアプリケーションの構築

35min

はじめに

チャットアプリケーションを作成するには、リアルタイムデータの管理、ユーザー認証、メディア処理、効率的なデータストレージが必要です。このチュートリアルでは、1対1およびグループ会話、メッセージのステータス、メディア共有をサポートするFlutterでのリアルタイムチャットアプリケーションの構築方法を学びます。バックエンド機能を処理するために、Parse Serverによって提供されるバックエンド・アズ・ア・サービスであるBack4Appを使用します。

このチュートリアルの終わりまでに、以下の機能を持つ完全に機能するチャットアプリを持つことができます:

  • ユーザー認証: 安全なサインアップとログインプロセス。
  • リアルタイムメッセージング: ライブクエリを使用した即時メッセージ配信。
  • ユーザーの存在: ユーザーのオンライン/オフラインステータスを追跡。
  • メディアストレージ: チャットでの画像の送受信。
  • メッセージ履歴: ユーザーのチャット履歴を保持。

前提条件

このチュートリアルに従うには、以下が必要です:

  • Flutter SDK をあなたのマシンにインストールします。 公式のFlutterインストールガイドを参照してください。
  • FlutterとDartの基本知識が必要です。
  • IDEまたはテキストエディタ、例えばVisual Studio CodeやAndroid Studioなど。
  • Back4Appアカウントが必要です。 Back4Appで無料アカウントにサインアップしてください。
  • Flutter用のParse Server SDKをプロジェクトに追加します。

概要

以下のコンポーネントを使用してチャットアプリケーションを構築します:

  • ユーザー認証: ユーザーはサインアップおよびログインできます。
  • 連絡先リスト: チャットするユーザーのリストを表示します。
  • チャット画面: リアルタイムメッセージングインターフェース。
  • メディア共有: 画像を送受信する機能。
  • オンラインステータス: ユーザーのオンライン/オフラインステータスを表示します。

ステップ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. ユーザークラス

  • フィールド:
    • ユーザー名: 文字列
    • パスワード: 文字列
    • メール: 文字列
    • オンラインかどうか: ブール値
    • アバター: ファイル(オプション)

この ユーザー クラスは組み込みであり、追加のフィールドがあることを確認する必要があります。

2.2.2. メッセージクラス

  • フィールド:
    • 送信者: ポインタ<_ユーザー>
    • 受信者: ポインタ<_ユーザー>
    • チャットルームID: 文字列
    • コンテンツ: 文字列
    • 画像: ファイル(オプション)
    • 作成日時: 日時(自動追加)

2.2.3. チャットルームクラス

  • フィールド:
    • chatRoomId: 文字列
    • users: Pointer<_User>の配列
    • lastMessage: 文字列
    • updatedAt: DateTime(自動更新)

2.3. アプリケーションの資格情報を取得する

  1. 次に進む アプリ設定 > セキュリティとキー.
  2. あなたの アプリケーションIDクライアントキー をメモしてください。

ステップ 3 – Flutter アプリで Parse を初期化する

次のように lib/main.dart を開いて修正します:

Dart

  • 'YOUR_APPLICATION_ID'」と'YOUR_CLIENT_KEY'を実際のBack4Appの資格情報に置き換えてください。

ステップ4 – ユーザー認証の実装

4.1. 認証サービスの作成

services」という新しいディレクトリを作成し、「lib」の下に、「auth_service.dart」という名前のファイルを追加します。

Dart


4.2. ログインとサインアップ画面の作成

新しいディレクトリを作成します。screenslibの下に作成し、次の名前のファイルを追加します。login_screen.dartsignup_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_APP'」をあなたのBack4Appアプリケーションのサブドメインに置き換えます。

7.3. チャット画面を作成する

Dart


説明

  • ParseLiveListWidget: ライブクエリの更新をリッスンし、データが変更されると再構築するウィジェットです。
  • sendMessage(): テキストメッセージまたは画像を送信します。
  • pickImage(): image_pickerを使用して画像を選択し、それをメッセージとして送信します。
  • setupLiveQuery(): チャットルームで新しいメッセージをリッスンするためのライブクエリを設定します。

ステップ 8 – アプリのテスト

8.1. アプリを実行する

ターミナルで、次のコマンドを実行します:

Bash


8.2. テストメッセージング

  • 2つのデバイスまたはエミュレーターでアプリを開く。
  • 異なるユーザーアカウントでサインアップまたはログインする。
  • 1つのアカウントから、連絡先リストから他のユーザーを選択する。
  • メッセージと画像を送信する; 両方のデバイスにリアルタイムで表示されるはずです。

結論

おめでとうございます! Back4Appを使用してFlutterでリアルタイムチャットアプリケーションを構築しました。このアプリは次の機能をサポートしています:

  • ユーザー認証: 安全なログインとサインアップ。
  • リアルタイムメッセージング: ライブクエリを使用した即時更新。
  • ユーザーの存在: オンライン/オフラインのステータストラッキング。
  • メディア共有: 画像の送受信。
  • メッセージ履歴: チャットメッセージの永続化。

次のステップ

  • グループチャット: アプリを拡張してグループ会話をサポートします。
  • メッセージのステータス: 読了通知と入力インジケーターを実装します。
  • プッシュ通知: アプリがバックグラウンドにあるときに新しいメッセージの通知を送信します。
  • プロフィール写真: ユーザーがアバターをアップロードできるようにします。
  • セキュリティ強化: ACLとロールベースの権限でデータを保護します。

追加リソース

楽しいコーディングを!