【发布时间】:2023-03-03 01:24:01
【问题描述】:
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
return StreamBuilder<UserData>(
stream: DatabaseService(uid: user.uid).currentUserData,
builder: (context, snapshot) {
print(snapshot.data); // return null
数据库服务类
class DatabaseService {
final String uid;
DatabaseService({this.uid});
//collection reference
CollectionReference userCollection = Firestore.instance.collection('user');
//get user data stream
Stream<UserData> get currentUserData {
return userCollection.document(uid).snapshots().map(_userDataFromSnapshot);
}
//user data from snapshot
UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
return UserData(
uid: snapshot.data['uid'],
email: snapshot.data['email'],
fName: snapshot.data['first_name'],
lName: snapshot.data['last_name'],
mobileNumber: snapshot.data['mobile_number'],
gender: snapshot.data['gender'],
dob: snapshot.data['date_of_birth'],
);
}
}
我期望得到的数据是我调用的对象的实例。
它返回flutter: null。
当我在我的练习应用中尝试时,它返回 I/flutter (11395): Instance of 'UserData'
我不知道问题的根源在哪里,请帮忙。我是 Flutter 的新手。
【问题讨论】:
-
首先,您必须检查数据是否可用..like..
builder: (context, snapshot) { if(snapshot.sata != null) { print(snapshot.data); } else {print("no data available");}希望能解决您的问题..如果对您有用,请回复.. -
我已经检查了数据是否可用,结果是数据不可用。我想知道,为什么没有数据。我已经在数据库类中获得了流。
-
嗯,我相信,这是你必须弄清楚的事情..
标签: flutter