我想将数据从Firebase获取到List,我不想使用StreamBuilder,我只想将数据获取到List以供以后使用。我尝试执行此操作,但是它显示方法'add'在null上被调用。
List<Map <dynamic, dynamic>> maps;
Firestore.instance
.collection('users')
.snapshots()
.listen((data) => data.documents.forEach((doc) => maps.add(doc.data) ));
答案 0 :(得分:0)
您没有初始化$ docker image rm --no-prune my:image
Untagged: my:image
Deleted: sha256:9f6a7f60fd0ddf06d079e9d1a5bd608a7dd85f6f00e7bacc79082a8ea4dc6601
变量,因此$ docker build --tag my:image .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM alpine
---> 965ea09ff2eb
Step 2/3 : RUN echo "hello"
---> Using cache
---> bffa49d7d012
Step 3/3 : RUN echo "world"
---> Running in f09302ce5295
world
Removing intermediate container f09302ce5295
---> 224a0d5007dd
Successfully built 224a0d5007dd
Successfully tagged my:image
实际上是在未初始化的变量(maps
)上调用的。
要解决此问题,请在声明maps.add(doc.data)
时对其进行初始化:
null
关于您在评论中提到的问题:我的猜测是您正在将地图长度打印在maps
之外,这是行不通的,因为数据加载是异步发生的。
针对该新问题的最简单的解决方法是使用var maps = List<Map <dynamic, dynamic>>();
和.listen((data) => data.documents.forEach((doc) => maps.add(doc.data) ))
:
get
或者,您可以继续使用await
,但是将打印操作移至回调中:
var data = await Firestore.instance
.collection('users')
.snapshots()
.get()
data.documents.forEach((doc) => maps.add(doc.data) ));
print(maps.length)
或更简单:
listen