[英]How to Get Array Field Values From Firestore
我有一个使用 Firestore 存储用户数据的 Flutter 应用程序。 我需要帮助来检索存储在“朋友”数组中的值。 下图显示了我的 Firestore 的结构。 如您所见,“朋友”字段是一个包含两个值的数组:“123456”和“789123”。
我想将这些值存储在我的名为friendsList
的变量中,并尝试在 getFriendsList() 中执行此操作。 为了测试 'friends' 数组值是否存储在friendsList
变量中,我在 getFriendsList() 末尾使用 print 语句来打印friendsList
的值。 但是当我检查我的控制台时,会打印Instance of 'Future<dynamic>'
而不是“friends”字段的值。
如何将 Firestore 中的“朋友”数组字段的值分配到我的friendsList
变量中?
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:mood/components/nav_drawer.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
FirebaseAuth auth = FirebaseAuth.instance;
User currentUser;
String currentUserUID;
Future<dynamic> friendsList;
class LandingScreen extends StatefulWidget {
static const String id = 'landing_screen';
@override
_LandingScreenState createState() => _LandingScreenState();
}
class _LandingScreenState extends State<LandingScreen> {
final _auth = FirebaseAuth.instance;
@override
void initState() {
super.initState();
getUserData();
}
void getUserData() {
getCurrentUser();
getCurrentUserUID();
getFriendsList();
}
void getCurrentUser() {
final currentUser = _auth.currentUser;
}
void getCurrentUserUID() {
currentUserUID = auth.currentUser.uid;
}
void getFriendsList() {
friendsList = FirebaseFirestore.instance
.collection("Users")
.doc(currentUserUID)
.get()
.then((value) {
return value.data()["friends"];
});
print(friendsList);
}
在 then 回调中,只需将您的列表分配给 friendsList 并将您的 friendsList 更改为List<dynamic>
类型
FirebaseFirestore.instance
.collection("Users")
.doc(currentUserUID)
.get()
.then((value) {
friendsList = value.data()["friends"];
print(friendsList);
});
根据您对异步等待语法的评论,
final value = await FirebaseFirestore.instance
.collection("Users")
.doc(currentUserUID)
.get();
friendsList = value.data()["friends"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.