コンポーネントの中で実行された結果をコンポーネントを使っている外部のページに渡すことが出来るのがExecute Callback機能です。使えるようになるとアプリ開発の効率化がかなり向上するので是非マスターしたいですね。
公式サイトで実行している内容をトレースしながら使い方を解説していきます。
Execute Callbackの概要
FlutterFlowのExecute Callbackは、コンポーネント内で行われたアクションを外部のページで利用できるようにするための機能です。
通常、コンポーネントをページに追加する際には、コンポーネント全体をタップすることでアクションを定義することができますが、コンポーネント内で行われたアクションを外部のページに送ることはできません。Execute Callbackを使用することで、コンポーネント内で行われたアクションを外部のページで利用することができます。
公式サイトでは以下のような図で示されています。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-47.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-46.png)
![](https://468516190-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhFNOxEwcl8ED58MUC_%2Fsocialpreview%2FLXVe7CdFPnNtVylrFgVF%2Fflutterflow_docs_cover.png?alt=media&token=76352822-45ce-4600-a12d-31efb44db52f)
Execute Callback | FlutterFlow Docs
ゴールイメージ
公式ページのガイドと同じですが、コンポーネントで画像を選択し、選択した画像をそのコンポーネントを使っているページ内で表示します。
以下のように画像をアップロードするボタンの箇所はコンポーネントになっています。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-50.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-49.png)
実装方法
コンポーネントの作成
- コンポーネントを作成します。今回は”New Component” > “Create Blank”から作成を開始します。
名前は”ImageUploader”にしておきます。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-51.png)
- パーツは以下のようにコンテナの中にtextとボタンだけ配置します。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-52.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-54.png)
はい、これでコンポーネントの作成は完了です。
画像を表示するためのページを作成
- ブランクのページにとりあえず、Imageと先ほど作成したコンポーネントを配置します。
今は配置しただけで何もアクションを設定していません。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-55.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-56.png)
コンポーネントにCallback actionを設定
- コンポーネントを表示し、画面右端のメニューからComponent Parametersを設定します。
- 設定内容は以下の画像の通りです。TypeはAction、Action ParameterはImagePathを設定してください。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-57.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-58.png)
メインのページでcallback actionを設定
- メインのページ(画像を表示するページ)に移ります。
- まずは、画像を格納するためのPage Stateを作成します。
今回はField Nameを”imagePath”、Typeは”ImagePath”にしておきます。(デフォルト値を設定しない場合はNullableにチェックを入れておいてください)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-63-wpp1718068767722.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-65.png)
- ImageUploaderのコンポーネントを選択し、右側にあるメニューの最下部の”Action Flow Editor”を選択します。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-61.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-62-wpp1718068532926.png)
- 画面上部が”Callback”になっています。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-69.png)
- ”Add Action”から”Update Page State”を選びます。設定する値は”Callback Parameters”の”imageURL”を設定します。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-66-wpp1718069074157.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-67-wpp1718069164571.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-68.png)
callback actionをトリガーする
- コンポーネントに移り、callbackアクションの動作を設定します。Uploadボタンのアクションに”Upload media”、アップロード先に”Firebase”を選択します。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-70.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-71.png)
- その後、2番目のアクションとしてExecute Callbackを選択します。
Execute CallbackではimageUploadActionを選択し、imageURLのパスとしてアップロードした画像のURL(Uploaded File URL)を選択します。
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-76.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-73.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-74.png)
画像のパスを変更
- 最後に表示する画像のPathを変更します。Page stateのimagePathを設定してください。
- 画像のデフォルトのURLも設定しておいてください。(適当な画像のURLで結構です)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-78.png)
![](https://insights.spovisor.com/wp-content/uploads/2024/06/image-77.png)
これで完成になります。
まとめ
今回はExecute Callbackの使い方を解説しました。
Execute Callbackを使うことでコンポーネントで取得したデータを外側のページで利用可能となります。これによってコンポーネントの利用シーンが格段に向上して生産性は爆上がりです!
とても便利な機能ですが、何となくわかりにくかったかと思います。私もまだよくわかっていませんが、、
何度か使っていれば理解出来てくるかと思うので頑張ってトライしてみてください。