Mba*_*pel 2 firebase flutter google-cloud-firestore
我在从 Firebase Cloud Firestore 获取消息时遇到问题。显示的错误是:'Error: The getter 'docs' isn't defined for the class 'Object' - 'Object' is from 'dart:core'.'
下面是我的代码:
class ChatScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: StreamBuilder<Object>(
stream: FirebaseFirestore.instance
.collection('chats/EKLJIb8ZfRoDTqxkkJaB/messages')
.snapshots(),
builder: (context, chatSnapshot) {
return ListView.builder(
itemCount: chatSnapshot.data.**docs**.length,
itemBuilder: (ctx, index) => Container(
padding: EdgeInsets.all(8),
child: Text('this work'),
),
);
}),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: null,
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
改变这个:
body: StreamBuilder<Object>(
Run Code Online (Sandbox Code Playgroud)
进入这个:
body: StreamBuilder<QuerySnapshot>(
Run Code Online (Sandbox Code Playgroud)
这docs
是 class 下的属性QuerySnapshot
,而不是 class 下的属性Object
。
您必须指定返回的类型stream
。因此,如果您有一个stream
of 类型Stream<QuerySnapshot>
,那么您可以将该类型作为参数添加到 the 中,StreamBuilder
如上面的代码所示。
在新cloud_firestore
包中,该snapshots()
方法返回Stream<QuerySnapshot<Map<String, dynamic>>>
,因此您将执行以下操作:
body: StreamBuilder<Object>(
Run Code Online (Sandbox Code Playgroud)
添加dynamic
可能会解决此问题,但最好添加返回的类型,因为这样编辑器或 IDE 将为您提供代码补全。
归档时间: |
|
查看次数: |
2153 次 |
最近记录: |