【问题标题】:Flutter Getting a specific Firestore document data and store it into a String variableFlutter 获取特定的 Firestore 文档数据并将其存储到 String 变量中
【发布时间】:2019-08-02 05:31:37
【问题描述】:

我正在尝试从我的 Firestore 中获取数据并将数据存储到一个名为 time 的字符串变量中。然后将变量放入_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]
};
}

This is my Firestore document

我是 Flutter 的新手,为这个问题苦苦挣扎了很久。希望有人可以帮助我

非常感谢

更新

我更改了我的代码。

但是,我仍然收到错误:方法 [](Intance of '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]
 };

谁能告诉我哪里出错了?

谢谢!

【问题讨论】:

  • time = ds.data["time"];
  • 对不起,我写错了,在我的实际代码中,它一直是事件,我的实际代码中没有时间变量
  • 你的未来没有返回任何东西。未来 getData....
  • 我尝试使用 Future>,但仍然显示错误

标签: firebase flutter google-cloud-firestore


【解决方案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]
};

【讨论】:

  • 谢谢你的帮助,但我不知道把ds放在哪里。我应该把它放在 initState 中还是在课堂上?另外,我不能在没有异步的情况下添加等待
  • 对不起,我是新来的flutter
  • ds 在第一行创建并在第二行使用。把这一切都放在自己的方法中并返回_events,然后在需要数据的时候调用该方法。
  • 我更改了代码,但是仍然出现错误。你能告诉我我哪里做错了吗?很抱歉再次问你这个问题。非常感谢!
【解决方案2】:

这对我有用:

Firestore().instance.collection('Collection Name')
.document('Document Name').get().then((data) async {
                     var dataReceive = data['property Name'];
                     }

【讨论】:

  • 这是异步任务,你必须等待,然后你可以使用 setstate 方法在获取值后更新 UI
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
相关资源
最近更新 更多