Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Firebase获取数据到列表为空(颤振)_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

从Firebase获取数据到列表为空(颤振)

从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

我想将数据从firebase获取到列表中,我不想使用StreamBuilder,我只想将数据获取到列表中以便以后使用。我尝试这样做,但它显示方法“add”是在null上调用的

 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);
});