我正在尝试从实时的Firestore数据库中提取值,但是代码中出现的错误很少。我已经使用streambuilder提取数据,因为只要数据库发生更改,就需要对其进行更新。
class ProfileWidget extends StatelessWidget {
final String userId;
ProfileWidget(this.userId);
@override
Widget build(BuildContext context){
return StreamBuilder<DocumentSnapshot>(
stream:Firestore.instance.collection('users')
.document(userId)
.snapshots(),
builder:(context, snapshot){
if(snapshot.hasData){
User user = User.fromSnapshot(snapshot.data);
return Row(
children: <Widget>[
Text(snapshot.data.documents[0]['sold'].toString())}
else
{return CircularProgressIndicator();
}
});
}
}
class User {
final int name;
final DocumentReference reference;
User.fromMap(Map<String, dynamic> map, {this.reference})
: name = map['name'];
User.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data, reference: snapshot.reference);
}
以下是我得到的两个错误:
'错误:未为类'DocumentSnapshot'定义吸气剂'documents'。 (位于[flutter_appprofilescreenfinal] lib \ main.dart:37的undefined_getter)
info:未使用局部变量“ user”的值。 ([flutter_appprofilescreenfinal] lib \ main.dart:34处的unused_local_variable)
答案 0 :(得分:0)
对于第一个错误,假设您的用户各自具有documents
属性,则您应该像这样访问它
snapshot.data['documents'][0]['sold'].toString()
第二个错误非常简单。您定义了用户,但从未在StreamBuilder的builder函数中使用它。