所以,我正在尝试构建一个小型应用程序,它会向您显示您添加到列表中的书籍。我试图从我的 Firebase 读取数据并将其显示在主页上,但我收到了这篇文章标题中的错误。
(不过,我可以轻松地将信息添加到数据库中)
这是我的代码:
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection('items').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if(!snapshot.hasData) return Text('No data');
return ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: (BuildContext context, int index){
return Container(
key: Key(snapshot.data!.docs[index].id),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
),
child: Container(
padding: EdgeInsets.fromLTRB(20, 25, 0, 0),
child: Row(
children: [
Container(
width: 120,
height: 160,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
image: DecorationImage(
image: NetworkImage(snapshot.data!.docs[index].get('url')),
),
),
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(snapshot.data!.docs[index].get('name'), style: TextStyle(
fontSize: 16,
fontFamily: "Avenir",
fontWeight: FontWeight.bold,
),),
Text(snapshot.data!.docs[index].get('author')),
Row(
children: [
Icon(Icons.star, size: 24, color: Colors.orangeAccent,),
Text(snapshot.data!.doc[index].get('rating')),
],
),
Text(snapshot.data!.docs[index].get('category')),
],
),
),
],
),
),
),
);
},
);
},
),
答案 0 :(得分:1)
您似乎在使用 cloud_firestore 2.0.0
。
随着 withConverter 的发布,许多类/函数都采用了 额外的通用参数。在大多数情况下,类型推断应该采取 为您照顾迁移。但在某些情况下,您可能必须 自己指定通用参数。
您需要在 StreamBuilder 中包含 Map<String, dynamic>
。像这样:
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream: FirebaseFirestore.instance.collection('items').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>> snapshot){
...
}