FirebaseFirestore.instance
.collection('women')
.snapshots()
.map((snapshot) => snapshot.docs
.map((document) => CategoryAvatar.fromJson({...document.data()}))
.toList())
.listen((avatar) {
avatarsInfo.addAll(avatar);
当我开始调试时,此异常在IDE的上面代码的第三行出现:
发生了异常。 NoSuchMethodError(NoSuchMethodError:方法'add'在null上调用。 接收者:null 尝试调用:add(“ MethodChannelQuerySnapshot的实例”)
在调试时,由于某些奇怪的原因,调试器总是会通过第五行和第六行,我的意思是程序无法执行这些行。
运行代码时,以下文本显示在调试控制台上
D / HwCustConnectivityManagerImpl(8132):isBlockNetworkRequestByNonAis,INVALID_SUBSCRIPTION_ID D / ConnectivityManager(8132):requestNetwork,调用的应用程序是:com.sincerity.sandra W / DynamiteModule(8132):找不到providerinstaller的本地模块描述符类。 I / DynamiteModule(8132):考虑本地模块providerinstaller:0和远程模块providerinstaller:0 W / ProviderInstaller(8132):无法加载providerinstaller模块:找不到可接受的模块。本地版本为0,远程版本为0。 D / HwCustConnectivityManagerImpl(8132):isBlockNetworkRequestByNonAis,INVALID_SUBSCRIPTION_ID
答案 0 :(得分:1)
在查询开始时添加 await 关键字已解决了问题
await _firebaseFirestore.collection('women').get().then(
(QuerySnapshot querySnapshot) {
querySnapshot.docs.forEach(
(doc) {
avatarsInfo.add(
CategoryAvatar.fromJson(
{
...doc.data(),
},
),
);
},
);
},
);
答案 1 :(得分:0)
尝试此方法是可行的,但它只能在一个周期内检索数据。
FirebaseFirestore.instance.collection('women').snapshots().map((snapshot) {
snapshot.documents.forEach((snapshot) {
print(snapshot.data);
CategoryAvatar avatar = CategoryAvatar.fromJson(snapshot.data());
avatarsInfo.addAll(avatar);
});
}).toList();
如果您正在流式传输数据,请尝试
Stream<List<CategoryAvatar>> avatarList() {
return FirebaseFirestore.instance.collection('women').
.snapshots()
.map((value) => value.documents
.map((result) => CategoryAvatar.fromJson(result.data()))
.toList());
}
我希望我能帮助您