为什么我不能在 flutter 的 streambuilder 中使用方法 data()
Why can't i use the method data() in my streambuilder in flutter
为什么我不能使用 .data()
方法?
StreamBuilder(
stream:
usersDb.doc(widget.allUsersFromDb.docs[index]["uid"]).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
}
// List? invitedByArray = snapshot.data!.data() not working
return Text("Invite");
},
),
明确一点,如果您不指定 StreamBuilder
类型,默认情况下它将是 <AsyncSnapshot>
解决方案是将 StreamBuilder
作为 <DocumentSnapshot>
StreamBuilder<DocumentSnapshot>(
stream: usersDb.doc(_auth.currentUser!.uid).snapshots(),
builder: (context, currentUserDocSnapshot) {
if (!currentUserDocSnapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
}
return Text(userSelectedSnapshot.data!["username"]);
},
);
然后您可以访问 .data
方法并访问您的文档值
为什么我不能使用 .data()
方法?
StreamBuilder(
stream:
usersDb.doc(widget.allUsersFromDb.docs[index]["uid"]).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
}
// List? invitedByArray = snapshot.data!.data() not working
return Text("Invite");
},
),
明确一点,如果您不指定 StreamBuilder
类型,默认情况下它将是 <AsyncSnapshot>
解决方案是将 StreamBuilder
作为 <DocumentSnapshot>
StreamBuilder<DocumentSnapshot>(
stream: usersDb.doc(_auth.currentUser!.uid).snapshots(),
builder: (context, currentUserDocSnapshot) {
if (!currentUserDocSnapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
}
return Text(userSelectedSnapshot.data!["username"]);
},
);
然后您可以访问 .data
方法并访问您的文档值