質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Q&A

解決済

1回答

618閲覧

[Flutter] firebaseから特定のドキュメントデータのみを取得する効率的方法

akirayoshimura

総合スコア45

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

0グッド

0クリップ

投稿2023/02/25 02:17

下記の様なfirebaseからname: hogeのデータを取得しそれを変数にして使用したいと思っています。
イメージ説明

理想のコードは下記の様になる事です。
GetUserNameが[name, age, platformName]のリストを返してくる想定。

data_list = GetUserName(documentId: "Nh6Hm27dUl9tpEmug3kn")

現在のコードは下記です
コード1と2は別のファイルになっています。
コード2は指定したドキュメントIDをfuturebuilderでget()し、取得したらそのスナップショットをmapに置き換え、そこから必要とされているデータをテキストとして戻すというものになっています。

コード1

Flutter

1return Scaffold( 2 body: SafeArea( 3 child: Column(children: [ 4 GetUserName(documentId: "Nh6Hm27dUl9tpEmug3kn"), 5 ])), 6 );

コード2

Flutter

1Class GetUserName extends StatelessWidget { 2 3 final String documentId; 4 GetUserName({required this.documentId}); 5 @override 6 Widget build(BuildContext context) { 7 CollectionReference users = FirebaseFirestore.instance.collection('review'); 8 9 return FutureBuilder<DocumentSnapshot>( 10 future: users.doc(documentId).get(), 11 builder: ((context, snapshot) { 12 if (snapshot.connectionState == ConnectionState.done) { 13 Map<String, dynamic> data = 14 snapshot.data!.data() as Map<String, dynamic>; 15 return Text('${data['name']}'); 16 } 17 return Text('Loaing'); 18 }), 19 ); 20 } 21} 22

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

効率的方法の定義がわからないのですが、

future: users.doc(documentId).get(),

と書くとGetUserNameのbuildメソッドが呼び出される度に毎回getメソッドが呼び出されることになります。
buildメソッドの呼び出し回数を把握・コントロールする発想だと仕事が増えそうなので、
公式のサンプルの下記のような書き方の方が良さそうな気がします。
https://github.com/flutter/flutter/blob/master/examples/api/lib/widgets/async/future_builder.0.dart

効率的方法の具体的な定義を示すと、あなたが求めている情報を得られる可能性が高まると思います。

投稿2023/02/26 01:01

moriman

総合スコア615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問