More
FlutterにおけるコールバックショートカットとBack4Appを使用したキーボードショートカットの実装方法
23 分
はじめに キーボードショートカットは、アプリケーション内の一般的なアクションへの迅速なアクセスを提供することで、ユーザーエクスペリエンスを向上させます。flutterでは、 callbackshortcuts ウィジェットを使用して、開発者がキーボードのキーの組み合わせをコールバック関数に直接マッピングできるようにし、アクションやインテントを定義する必要がありません。これにより、アプリにキーボードショートカットを追加するプロセスが簡素化されます。 このチュートリアルでは、flutterアプリケーションに callbackshortcuts を統合し、parse serverによって提供されるバックエンドサービスであるback4appを使用してデータを保存および取得する方法を学びます。このチュートリアルの終わりには、back4appからデータを取得するなどのアクションを実行するためにキーボードショートカットに応答するflutterアプリが完成します。 前提条件 このチュートリアルを完了するには、次のものが必要です flutter sdk があなたのマシンにインストールされていること。 公式flutterインストールガイド https //flutter dev/docs/get started/install をあなたのオペレーティングシステムに従ってください。 flutterとdartの基本的な知識 。flutterが初めての場合は、 flutterドキュメント https //flutter dev/docs を確認して基本を理解してください。 visual studio codeやandroid studioなどの ideまたはテキストエディタ。 back4appアカウント 。 back4app https //www back4app com/ で無料アカウントにサインアップしてください。 flutter用のparse server sdk をプロジェクトに追加します。 back4app flutter sdkガイド https //www back4app com/docs/flutter/parse flutter sdk を参照して設定方法を学びます。 キーボードショートカットをテストするための 物理キーボードまたはエミュレーター。 ステップ1 – flutterプロジェクトの設定 1 1 新しいflutterプロジェクトを作成する ターミナルを開いて、次のコマンドを実行します flutter create callback shortcuts app プロジェクトディレクトリに移動します cd callback shortcuts app 1 2 依存関係を追加する pubspec yaml を開いて、次の依存関係を追加します dependencies flutter sdk flutter parse server sdk flutter ^4 0 1 flutter pub get を実行して、パッケージをインストールします。 ステップ 2 – back4appの設定 2 1 新しいback4appアプリケーションを作成する あなたの back4appダッシュボード https //dashboard back4app com/ にログインします。 「 新しいアプリを作成 」をクリックします。 アプリケーションの名前を入力します。例 「callbackshortcutsapp」 , そして「 作成 」をクリックします。 2 2 データモデルを設定する アプリケーションダッシュボードで、 "database" セクションに移動します。 "クラスを作成" をクリックします。 モーダルで "カスタム" を選択します。 クラス名として "アイテム" を入力します。 "クラスを作成" をクリックします。 2 3 クラスに列を追加する "アイテム" クラスで、 "+" をクリックして新しい列を追加します。 次の列を追加します 名前 タイプ 文字列 説明 タイプ 文字列 "アイテム" クラスにサンプルデータを追加します。例えば 2 4 アプリケーションクレデンシャルを取得する 「 アプリ設定 > セキュリティとキー 」に移動します。 あなたの アプリケーションid と クライアントキー をメモしてください。 ステップ3 – flutterアプリでparseを初期化する 「 lib/main dart 」を開き、次のように修正します import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk dart'; import 'home page dart'; // you'll create this file next void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your application id'; const keyclientkey = 'your client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, debug true, ); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( title 'callback shortcuts app', theme themedata( primaryswatch colors blue, ), home homepage(), ); } } 「 'your application id' 」と「 'your client key' 」を実際のback4appの資格情報に置き換えます。 ステップ4 – back4appからデータを取得する 新しいファイル「 lib/home page dart 」を作成します import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk dart'; class homepage extends statefulwidget { @override homepagestate createstate() => homepagestate(); } class item { final string name; final string description; item(this name, this description); } class homepagestate extends state\<homepage> { list\<item> items = \[]; future\<void> fetchitems() async { final querybuilder\<parseobject> query = querybuilder\<parseobject>(parseobject('item')); final parseresponse apiresponse = await query query(); if (apiresponse success && apiresponse results != null) { setstate(() { items = apiresponse results! map((data) { final name = data get\<string>('name') ?? ''; final description = data get\<string>('description') ?? ''; return item(name, description); }) tolist(); }); } else { print('error fetching data ${apiresponse error? message}'); } } @override void initstate() { super initstate(); fetchitems(); } @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('callback shortcuts app'), ), body items isempty ? center(child circularprogressindicator()) listview\ builder( itemcount items length, itembuilder (context, index) { return listtile( title text(items\[index] name), subtitle text(items\[index] description), ); }, ), ); } } 説明 itemクラス back4appから取得したアイテムを表すモデルクラスです。 fetchitems() back4appの item クラスからデータを取得し、 items リストを更新します。 build() アイテムのリストを表示するか、データがまだ取得中の場合はローディングインジケーターを表示します。 ステップ5 – callbackshortcutsの実装 さて、データを更新し、リストをナビゲートするためのキーボードショートカットを追加しましょう。 5 1 フォーカスとコールバックショートカットウィジェットを追加する 次の build() メソッドを home page dart で修正します。 @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('callback shortcuts app'), ), body focus( autofocus true, child callbackshortcuts( bindings { singleactivator(logicalkeyboardkey keyr, control true) () { fetchitems(); scaffoldmessenger of(context) showsnackbar( snackbar(content text('data refreshed')), ); }, singleactivator(logicalkeyboardkey arrowdown) () { focusnextitem(); }, singleactivator(logicalkeyboardkey arrowup) () { focuspreviousitem(); }, }, child items isempty ? center(child circularprogressindicator()) listview\ builder( itemcount items length, itembuilder (context, index) { return focusableactiondetector( child listtile( title text(items\[index] name), subtitle text(items\[index] description), ), ); }, ), ), ), ); } 説明 フォーカスウィジェット 本体をラップして、フォーカスとキーボードイベントを受け取れるようにします。 コールバックショートカット キーボードショートカットをコールバック関数にマッピングします。 ctrl + r fetchitems() を呼び出してデータを更新します。 下矢印 フォーカスを次の項目に移動します。 上矢印 フォーカスを前の項目に移動します。 フォーカス可能アクションデテクタ 各 listtile をフォーカス可能にして、キーボードを使用してナビゲートできるようにします。 5 2 ナビゲーション機能の実装 アイテムナビゲーションを処理するために、次のメソッドを追加します void focusnextitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus nextfocus(); } } void focuspreviousitem() { final focus = focusscope of(context); if (focus canrequestfocus) { focus previousfocus(); } } ステップ 6 – キーボードショートカットのテスト 6 1 アプリを実行 ターミナルで、次のコマンドを実行します flutter run 6 2 リフレッシュショートカットのテスト アプリが実行中のときに、 ctrl + r (または cmd + r macosの場合)を押します。 「 データが更新されました 」というスナックバーのメッセージが表示されるはずです。 データに変更があれば、リストが更新されるはずです。 6 3 ナビゲーションショートカットのテスト リストをナビゲートするには、 下矢印 と 上矢印 キーを使用します。 フォーカスが異なるアイテムに移動するのが見えるはずです。 結論 このチュートリアルでは、 callbackshortcuts を使用してflutterアプリケーションにキーボードショートカットを実装する方法を学びました。back4appを統合してデータを取得し表示し、ユーザーがキーボードショートカットを使用してアプリと対話できるようにすることで、ユーザーエクスペリエンスを向上させました。 重要なポイント callbackshortcuts コールバック関数に直接キーの組み合わせをマッピングすることで、キーボードショートカットの追加を簡素化します。 フォーカス管理 ウィジェットがキーボードイベントを受け取るために不可欠です。 back4app統合 データを保存および取得するためのスケーラブルなバックエンドを提供します。 次のステップ ショートカットの拡張 追加機能のために、さらに多くのキーボードショートカットを追加します。 プラットフォーム固有の修飾子 プラットフォーム間の修飾キーの違いを処理します(例:controlとcommand)。 アクセシビリティ キーボードナビゲーションとスクリーンリーダーをサポートすることで、アプリがアクセシブルであることを確認します。 エラーハンドリング back4appからデータを取得する際のエラーハンドリングを改善します。 追加リソース back4appドキュメント https //www back4app com/docs flutter用parse sdkガイド https //docs parseplatform org/flutter/guide/ flutter公式ドキュメント https //flutter dev/docs callbackshortcutsウィジェット https //api flutter dev/flutter/widgets/callbackshortcuts class html 楽しいコーディングを!