我正在尝试从Firestore中获取数据并将数据存储到名为time的String变量中。然后将变量放入_event。
但是,当我运行代码时,我得到了null,而且我也不知道为什么。
StateFulWidget...
String event;
Map<DateTime, List> _events;
@override
void initState() {
super.initState();
Firestore.instance.collection('events').document('2019-07-
30').get().then((
DocumentSnapshot ds) {
event = ds['time'];
});
_events = {
DateTime.parse("2019-08-01"): [event]
};
}
我是Flutter的新手,我为这个问题苦苦挣扎了很长时间。希望有人可以帮助我
非常感谢您
更新
我更改密码。
但是,我仍然遇到错误:方法[](“ DateTime”的实例)在null上被调用。
String event;
Map<DateTime, List> _events;
Future<String> getData()async{
final ds = await
Firestore.instance.collection('events').document('2019-07-30').get();
return ds['time'];
}
@override
void initState() {
super.initState();
getData().then((s) {
event = s;
//when I print(s), it showed the data correctly
});
_events = {
DateTime.parse("2019-08-01"): [event]
};
有人可以告诉我我哪里错了吗?
谢谢!
答案 0 :(得分:1)
您不是在等待结果,即 _events = .. 将在 .then()子句之前运行,这就是 event 的原因变量仍然为空;
.get()是Future,因此您需要等待结果。
final ds = await Firestore.instance.collection('events').document('2019-07-
30').get();
event = ds['time'];
_events = {
DateTime.parse("2019-08-01"): [event]
};
答案 1 :(得分:0)
这对我有用:
Firestore().instance.collection('Collection Name')
.document('Document Name').get().then((data) async {
var dataReceive = data['property Name'];
}