从Firebase获取数据到列表为空(颤振)
我想将数据从firebase获取到列表中,我不想使用StreamBuilder,我只想将数据获取到列表中以便以后使用。我尝试这样做,但它显示方法“add”是在null上调用的从Firebase获取数据到列表为空(颤振),firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我想将数据从firebase获取到列表中,我不想使用StreamBuilder,我只想将数据获取到列表中以便以后使用。我尝试这样做,但它显示方法“add”是在null上调用的 List<Map <dynamic, dynamic>> maps; Firestore.instance .collection('users') .snapshots() .listen((data) => data.documents.forEach((doc
List<Map <dynamic, dynamic>> maps;
Firestore.instance
.collection('users')
.snapshots()
.listen((data) => data.documents.forEach((doc) => maps.add(doc.data) ));
列表地图;
Firestore.instance
.collection('用户')
.快照()
.listen((数据)=>data.documents.forEach((doc)=>maps.add(doc.data));
您没有初始化maps
变量,因此maps.add(doc.data)
确实是在未初始化的变量(null
)上调用的
要解决此问题,请在声明映射时初始化映射:
var maps = List<Map <dynamic, dynamic>>();
或者,您可以继续使用listen
,然后将打印操作移到回调中:
await Firestore.instance
.collection('users')
.snapshots()
.listen((data) => {
data.documents.forEach((doc) => maps.add(doc.data));
print(maps.length);
});
或者稍微简单一点:
await Firestore.instance
.collection('users')
.snapshots()
.listen((data) => {
var maps = data.documents.map((doc) => doc.data);
print(maps.length);
});
“它仍然不起作用”不是很可行。当你做这个改变时会发生什么?你有什么错误?当您逐步浏览代码时,哪一行没有完成您希望它完成的任务?你对所发生的事情了解得越清楚,我们帮助你的机会就越大。我在按下按钮时创建了一个按钮,将数据从cloud firebase获取到地图,但我打印(maps.length)它显示值0你的代码不显示打印
maps.length
,但我猜你是在listen
回调之外这样做的,这是行不通的。还请注意,如果错误从“方法'add'在null上被调用”更改,那么您原来的问题就解决了,您正在处理一个新问题。
await Firestore.instance
.collection('users')
.snapshots()
.listen((data) => {
var maps = data.documents.map((doc) => doc.data);
print(maps.length);
});