現在FlutterでWeb向けに開発しています。
cloud_firestoreを使ってユーザーデータを管理することを目標としています。
Firestoreにデータを保存することはできたのですが、どういうわけかそのデータを取得しようとするとNullが帰ってきてしまいます。
#コード
FutureBuilderを用いてデータの取得完了を待っています。
毎回return Text("Document does not exist");
が呼び出されてしまいます。
dart
1Widget build(BuildContext context) { 2 CollectionReference users = FirebaseFirestore.instance.collection('users'); 3 4 return FutureBuilder<DocumentSnapshot>( 5 future: users.doc(FirebaseAuth.instance.currentUser!.uid).get(), 6 builder: 7 (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) { 8 if (snapshot.hasError) { 9 return Text("Something went wrong"); 10 } 11 12 if (!snapshot.hasData && !snapshot.data!.exists) { 13 return Text("Document does not exist"); 14 } 15 16 if (snapshot.connectionState == ConnectionState.done) { 17 Map<String, dynamic> data = 18 snapshot.data!.data() as Map<String, dynamic>; 19 return Text("Full Name: ${data['userName']}"); 20 } 21 22 return const CircularProgressIndicator(); 23 }, 24 ); 25 }
また、上のコードから以下の部分を消去すると下のエラーが発生します。
dart
1 if (!snapshot.hasData && !snapshot.data!.exists) { 2 return Text("Document does not exist"); 3 }
Expected a value of type 'Map<String, dynamic>', but got one of type 'Null'
というエラーが発生します。これはsnapshot.hasData
がtrue
になるにもかかわらずデータがないという事ですか?
#構造
usersというコレクションの中に、ユーザーそれぞれのデータのもととなるUID、その中にuserNameというフィールドがあります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。