Firebase 更新云firestore后:操作员';[]和#x27;isn';t为类型';对象';。尝试定义运算符';[]和#x27;

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

一切都很好,但当我升级我对云firestore的依赖时。我开始收到一个错误“没有为“Object”类型定义运算符“[]”。此错误出现在所有4个userData.data()[“”]的前面

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;
 }