micomia株式会社の畑井です。
今回はFlutterFlowで検索機能を作成する方法を解説します。
1.検索機能を作るための土台を準備する

まずはこのようなWidget構成で検索機能を作るための準備をします。

データベースは何のコレクションを作ってもらっても問題ありませんが、今回はFirebaseで下記のコレクションを作成しました。

検索ボタンにActionsを設定する形で進めていきます。

実際に設定したアクションの中身はこちらです。
今回は投稿のタイトルを検索対象にします。
Search Termというところは検索ワードが入るところになります。
そのため、ここはTextField Widgetに入力された内容をセットします。
Max Resultsは検索結果を表示する件数になります。

設定が終わりましたら、ListViewの「Generating Children from Variable」を選択してください。ここは、リアルタイムに内容を表示することができるページになっていまして検索ボタンが押されるたびに検索結果に表示する内容を変えたいのでこのように設定しています。

Simple Search Resultという項目をクリックするとSimple Searchが出した検索結果を読み取ることができます。

表示するデータを「results」としたため、「results Item」と表示されています。
その中で検索結果としてpostsコレクションのタイトルを表示したいのでクリックします。
これで完成です。
2.Simple Searchの弱点
例えば「あ」や「a」といった一文字を打ち込んだ場合の検索結果がかなり良くないというデメリットがあります。「あ」や「a」が含まれている項目以外も表示されますのでこのあたりの精度は許容しなければなりません。
また、検索は部分一致であるため完全一致を希望の場合は別途コードを書く必要があります。
3.他の方法
Custom Functionで部分一致や完全一致の検索機能を設けることができます。
その場合、データベース側の処理をCustom Codeで書くと実装難易度が上がってしまうことから簡易的にWidgetの表示・非表示で処理する方法もあります。
4.まとめ
今回はFlutterFlowで検索機能を実装する方法について解説しました。
検索機能を強化しようとするとFirebaseでは厳しくなるのでSupabaseなど別のデータベースをご検討ください。
micomiaでは本記事で具体的に実装方法をご紹介できなかったコードを書いた検索機能などの実装に関するご相談などもお受けしておりますのでお気軽にお問い合わせください。
動画でもっと知りたい方はこちら



.webp%3Falt%3Dmedia%26token%3D087cf100-0101-43ba-a354-dab3bbec04d2&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3Da7c14698-1b08-4fea-89c6-f77a9121f4c5&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D899eeefd-f4c9-44a6-9ec2-3ced0b223ffd&w=3840&q=75)

.webp%3Falt%3Dmedia%26token%3D554beac3-1f0a-4dae-99c0-76320019500f&w=3840&q=75)







.webp%3Falt%3Dmedia%26token%3D7c77ae76-450c-48b3-be29-0e949e7116dc&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3Dd8f3f5bc-41c2-4a1e-ace1-62e9ae72d08b&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D679eb351-4808-4d43-8b9d-92f6a88584ef&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D5c25485e-7be1-4f95-ad65-2e4c0c2d0ddb&w=3840&q=75)

.webp%3Falt%3Dmedia%26token%3D1875ff54-2eaa-4913-8d8c-9a4855927112&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D900f385d-12a2-449b-8d1e-83a57cef0088&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D0e802fb0-2dda-44a7-bf80-5d39019635ba&w=3840&q=75)