More
FlutterのCompletersをBack4appのバックエンドと一緒に使用する方法
10 分
はじめに futures と streams は、あらゆる種類の非同期操作において進むべき道です。しかし、時にはどちらも不十分な場合があります。もし futures に対してより高度な制御を望むのであれば、 completer を使用してください。それは、プログラム的に future を完了させるためのツールです。ある意味で、これにより非同期操作に対するより良い制御が提供されます。このチュートリアルでは、 back4app のバックエンドと対話するアプリケーションで flutter completers を使用する方法を学ぶ手助けをします。 このチュートリアルの終わりまでに、あなたは completers を使用して非同期タスクを管理し、これらのタスクを back4app から提供されたバックエンドサービスと統合する方法を学ぶことができます。私たちは、 completer を使用してアプリケーションのフローを制御しながら、 back4app バックエンドからデータを取得する非常にシンプルなアプリを作成します。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウント。 back4app com https //www back4app com で無料アカウントにサインアップしてください。 ローカルマシンにflutter開発環境をセットアップしてください。まだセットアップしていない場合は、 flutterインストールガイド https //flutter dev/docs/get started/install を参照してください。 dartとflutterにおける非同期プログラミングの基本的な知識。リフレッシャーが必要な場合は、 flutter非同期プログラミングガイド https //dart dev/codelabs/async await をチェックしてください。 ステップ 1 – back4app バックエンドの設定 まず、flutter アプリケーションが対話するシンプルなバックエンドを back4app に設定しましょう。 back4app アカウントにログイン し、新しいプロジェクトを作成します。 新しい parse クラスを設定 し、 task という名前を付けます。このクラスは、flutter アプリが取得するタスクを保存します。次の列を task クラスに追加します name (string) タスクの名前。 status (boolean) タスクの状態(完了または未完了)。 テスト用にいくつかのサンプルタスクを追加 します。例えば タスク 1 name = "flutter チュートリアルを完了する", status = true タスク 2 name = "新しいプロジェクトを開始する", status = false あなたの back4app バックエンドは、flutter アプリによってアクセスできるようになりました。 ステップ 2 – flutter プロジェクトの作成 次に、新しいflutterプロジェクトを作成します。 ターミナルまたはコマンドプロンプトを開きます。 新しいflutterプロジェクトを作成するために、次のコマンドを実行します flutter create completer demo プロジェクトディレクトリに移動します cd completer demo 2\ お好みのコードエディタ(例:vs code、android studio)でプロジェクトを開きます。 ステップ3 – parse sdkの追加とアプリの設定 さて、back4appと対話するために必要な依存関係を追加しましょう。 pubspec yaml を開き、次の依存関係を追加します dependencies flutter sdk flutter parse server sdk flutter ^3 0 0 2\ run flutter pub get 依存関係をインストールします。 3\ lib/main dart で、parse sdkをインポートします import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; import 'dart\ async'; 4\ main 関数でparseを初期化します void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your app id'; const keyclientkey = 'your client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } 「 'your app id' 」と「 'your client key' 」を実際のback4appの資格情報に置き換えます。 ステップ4 – completersを使用して非同期にデータを取得する さて、back4appバックエンドからデータを取得し、uiでデータが使用可能になるタイミングを制御するために、 completer を使用しましょう。 「 lib/main dart 」で、back4appからタスクを取得する新しいクラスを作成します。 completer を使用します class taskmanager { final completer\<list\<parseobject>> completer = completer(); future\<list\<parseobject>> get tasks => completer future; taskmanager() { fetchtasks(); } void fetchtasks() async { querybuilder\<parseobject> query = querybuilder\<parseobject>(parseobject('task')); final parseresponse response = await query query(); if (response success && response results != null) { completer complete(response results); } else { completer completeerror('failed to load tasks'); } } } このクラスは completer を初期化し、データの取得を開始し、データが利用可能になると completer を完了します。 2\ myapp ウィジェットで、 taskmanager を使用してタスクを取得し表示します class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home scaffold( appbar appbar(title text('flutter completer demo')), body futurebuilder\<list\<parseobject>>( future taskmanager() tasks, builder (context, snapshot) { if (snapshot connectionstate == connectionstate waiting) { return center(child circularprogressindicator()); } else if (snapshot haserror) { return center(child text('error ${snapshot error}')); } else if (!snapshot hasdata || snapshot data! isempty) { return center(child text('no tasks found ')); } else { return listview\ builder( itemcount snapshot data! length, itembuilder (context, index) { final task = snapshot data!\[index]; return listtile( title text(task get\<string>('name') ?? 'no name'), subtitle text('completed ${task get\<bool>('status') ? 'yes' 'no'}'), ); }, ); } }, ), ), ); } } 3\ flutter アプリを実行します バック4アプリのバックエンドから取得したタスクのリストが表示され、名前と完了状況が表示されるはずです。 結論 このチュートリアルでは、flutter completers を使用して非同期操作を管理し、アプリケーション内のデータ取得の流れを制御する方法を学びました。back4app と統合することで、flutter アプリのためのシンプルでありながら強力なバックエンドを作成し、データを動的に取得して表示できるようにしました。このアプローチは、ユーザー認証、データ操作などのより複雑なシナリオを処理するために拡張できます。 flutter を back4app と一緒に使用する方法についての詳細は、 back4app flutter ドキュメント https //www back4app com/docs/flutter/overview をご覧ください。コーディングを楽しんでください!