未为类型“DocumentSnapshot”定义运算符“[]”

Rob*_*bel 5 flutter google-cloud-firestore

[这是错误] 我在另一个类中创建了构造函数,但它不起作用。

这是代码...

  body: StreamBuilder<QuerySnapshot>(
    stream: FirebaseFirestore.instance.collection("products").snapshots(),
    builder: (context, snapshot) {
      return !snapshot.hasData
          ? Center(child: CircularProgressIndicator())
          : ListView.builder(
              itemCount: snapshot.data.docs.length,
              itemBuilder: (context, index) {
                DocumentSnapshot data = snapshot.data.docs[index];
                return ProductItem(
                  documentSnapshot: data,
                  id: data.id,
                  isFavourite: data['isFavourite'],
                  imageUrl: data['imageUrl'],
                  productName: data['productName'],
                  productPrice: data['productPrice'],
                );
              },
            );
    },
  ),
);
}
}
Run Code Online (Sandbox Code Playgroud)

Sid*_*jha 8

您正在使用 ^0.14.0。不推荐直接调用 []

 body: StreamBuilder<QuerySnapshot>(
    stream: FirebaseFirestore.instance.collection("products").snapshots(),
    builder: (context, snapshot) {
      return !snapshot.hasData
          ? Center(child: CircularProgressIndicator())
          : ListView.builder(
              itemCount: snapshot.data.docs.length,
              itemBuilder: (context, index) {
                DocumentSnapshot data = snapshot.data.docs[index];
                return ProductItem(
                  documentSnapshot: data,
                  id: data.id,
                  isFavourite: data.data()['isFavourite'],
                  imageUrl: data.data()['imageUrl'],
                  productName: data.data()['productName'],
                  productPrice: data.data()['productPrice'],
                );
              },
            );
    },
  ),
);
}
}
Run Code Online (Sandbox Code Playgroud)


Mad*_*ahi 5

尝试这个,

  body: StreamBuilder<QuerySnapshot>(
    stream: FirebaseFirestore.instance.collection("products").snapshots(),
    builder: (context, snapshot) {
      return !snapshot.hasData
          ? Center(child: CircularProgressIndicator())
          : ListView.builder(
              itemCount: snapshot.data.docs.length,
              itemBuilder: (context, index) {
                DocumentSnapshot data = snapshot.data[index];
Map getDocs = data.data; 
                return ProductItem(
                  documentSnapshot: data,
                  id: data.id,
                  isFavourite: getDocs['isFavourite'],
                  imageUrl: getDocs['imageUrl'],
                  productName:getDocs['productName'],
                  productPrice: getDocs['productPrice'],
                );
              },
            );
    },
  ),
);
}
}
Run Code Online (Sandbox Code Playgroud)