Firebase 更新云firestore后:操作员';[]和#x27;isn';t为类型';对象';。尝试定义运算符';[]和#x27;
一切都很好,但当我升级我对云firestore的依赖时。我开始收到一个错误“没有为“Object”类型定义运算符“[]”。此错误出现在所有4个userData.data()[“”]的前面 从Firebase 更新云firestore后:操作员';[]和#x27;isn';t为类型';对象';。尝试定义运算符';[]和#x27;,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,一切都很好,但当我升级我对云firestore的依赖时。我开始收到一个错误“没有为“Object”类型定义运算符“[]”。此错误出现在所有4个userData.data()[“”]的前面 从cloud\u firestore开始2.0.0版 类DocumentSnapshot现在接受一个通用参数。宣言: abstract class DocumentSnapshot<T extends Object?> { abstract class Query<T extends Obj
cloud\u firestore开始
2.0.0版
类DocumentSnapshot
现在接受一个通用参数。宣言:
abstract class DocumentSnapshot<T extends Object?> {
abstract class Query<T extends Object?>
因此,您需要执行以下操作:
DocumentSnapshot<Map<String, dynamic>> userData =
await userCollection.doc(_auth.currentUser.uid).get();
return await postsCollection.doc().set({
"id": _auth.currentUser.uid,
"sellername": userData.data()["name"],
"sellercontact": userData.data()["phone"],
"sellercity": userData.data()["city"],
"sellerstate": userData.data()["state"],
});
Stream<QuerySnapshot<T>> snapshots({bool includeMetadataChanges = false});
以上将给出错误:
无法将“Stream”类型的值分配给“Stream”类型的变量
出现此错误是因为Query
具有以下声明:
abstract class DocumentSnapshot<T extends Object?> {
abstract class Query<T extends Object?>
由于没有为查询指定类型,并且t扩展了对象?
,因此在代码快照()中将具有以下返回类型流
,您将得到上述错误。因此,要解决这个问题,您必须:
Query<Map<String,dynamic>> query = FirebaseFirestore.instance.collection("collectionPath");
final Stream<QuerySnapshot<Map<String,dynamic>>> snapshots = query.snapshots();
Query Query=FirebaseFirestore.instance.collection(“collectionPath”);
最终流快照=query.snapshots();
根据报告:
打破重构:DocumentReference、CollectionReference、Query、DocumentSnapshot、CollectionSnapshot、QuerySnapshot、QueryDocumentSnapshot、Transaction.get、Transaction.set和WriteBatch.set现在使用一个额外的通用参数。(#6015)
因此,您需要为所有这些类实现上述功能。在我的例子中,我只需将snapshot.data()['parameter']
更改为snapshot.get('parameter')
尝试放置一个print
语句来检查该数据是什么。您可能必须首先打印(userData.data());当使用这个打印时,我会得到完整的json数据,但当我试图得到一个特定的数据时,它会显示错误。如果我使用此依赖项,它将不会显示任何错误,并将顺利运行cloud_firestore 1.0.7。但升级后会出现打印错误(userData.data()[“name”]);如果print(userData),它将给出“_JsonDocumentSnapshot”Map user=jsonDecode(userData.data())的实例;打印(用户[“名称”].toString());我也试过了,但还是不起作用
Query<Map<String,dynamic>> query = FirebaseFirestore.instance.collection("collectionPath");
final Stream<QuerySnapshot<Map<String,dynamic>>> snapshots = query.snapshots();
UserModel _userFromFirebaseSnapshot(DocumentSnapshot snapshot) {
return snapshot != null ?
UserModel(snapshot.id,
name: snapshot.get('name'),
profileImageUrl: snapshot.get('profileImageUrl'),
email: snapshot.get('email'),
) : null;
}