当前位置: 首页 > 知识库问答 >
问题:

当我尝试使用流生成器从Firebase检索数据时(列表不是类型String的子类型)

蓬弘
2023-03-14

当我想使用StreamBuilder从Firebase获取数据时,我想要Firebase firestone的图像和一些文本

  @override
  Widget build(BuildContext context) {
    return   StreamBuilder (
  stream: FirebaseFirestore.instance.collection("products").snapshots(),
  builder: (_, snapshot){
  if(!snapshot.hasData){
  return Center(
  child:Text("Loading"),);
  }else{
    return GridView.builder(
      itemCount: snapshot.data.docs.length,
      gridDelegate:
      new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      itemBuilder: (BuildContext contex, int index) {
        DocumentSnapshot data = snapshot.data.docs[index];
        return  
        Single_prod (
          product_name: data['name'],
          prod_pictures: data['imageurl'],
          prod_oldprice: data['old_price'],
          prod_price: data["price"],
        );
      },
    );
  }
  }
  );

当它调用Single_prod类时,它发生在这个类中,图像和文本显示Single_prod类:

class Single_prod extends  StatefulWidget {
  final product_name;
  final prod_pictures;
  //final prod_oldprice;
  final prod_price;

  const Single_prod(
      {Key key,
      this.product_name,
      this.prod_pictures,
      this.prod_oldprice,
      this.prod_price});

  @override
  _Single_prodState createState() => _Single_prodState();
}

我得到这个错误:

类型“List”不是类型“String”的子类型
导致错误的相关小部件是

共有1个答案

祝宏放
2023-03-14

尝试使用product_name:data.data()['name'],对您的其他产品项目也一样。在您返回的数据中的某个地方,您得到了一个List,并试图将其分配给一个字符串。文件快照中的哪个元素是列表对象?

对于图片,试试这个prod_pictures:data.data()['Imageurl'][0]

 类似资料: