【问题标题】:Flutter: How to convert Future<dynamic> to MapFlutter:如何将 Future<dynamic> 转换为 Map
【发布时间】:2021-08-11 05:50:30
【问题描述】:

我需要为我的应用使用地图。此地图的内容位于云中。我有从 FireStore 获取特定节点并将其存储在 Map 中的方法,之后我需要在 kEvents 中将此映射用作 Map&lt;DateTime,dynamic&gt;,如代码所示。我该怎么做?

完整代码:

class Event {
  final String title;

  const Event(this.title);

  @override
  String toString() => title;
}

Map<DateTime, dynamic> testMap = {};

Future<Map<DateTime, dynamic>> getEventsList() async {
  var data = await FirebaseFirestore.instance.collection('events').get();

  for (int i = 0; i < data.docs.length; i++) {
    var time = (data.docs[i]['date'] as Timestamp).toDate();
    var title = Event(data.docs[i]['title']);
    testMap[time] = title;
  }

  print(testMap);

  return testMap;
}

Map<DateTime, dynamic> eventMap = getEventsList();

final kEvents = LinkedHashMap(
  equals: isSameDay,
  hashCode: getHashCode,
)..addAll(eventMap); // Use Map here

int getHashCode(DateTime key) {
  return key.day * 1000000 + key.month * 10000 + key.year;
}

final kToday = DateTime.now();
final kFirstDay = DateTime(kToday.year, kToday.month - 1, kToday.day);
final kLastDay = DateTime(kToday.year, kToday.month + 1, kToday.day);

【问题讨论】:

  • await放在getEventsList()前面。您正在使用未来的功能。
  • 如果某个方法是async,它总是返回一个Future,所以你的getEventsList应该声明为:Future&lt;Map&lt;DateTime, dynamic&gt;&gt; getEventsList() async { ...

标签: flutter dart google-cloud-firestore


【解决方案1】:

将你的函数初始化为:

Future<Map<DateTime, dynamic>> getEventsList() async {// your code}

并用作:

Map<DateTime, dynamic> eventMap = await getEventsList();

【讨论】:

  • 我在返回 testMap; 时遇到错误,错误是:A value of type 'Map&lt;dynamic, dynamic&gt;' can't be returned from the function 'getEventsList' because it has a return type of 'Future&lt;Map&lt;DateTime, dynamic&gt;&gt;'。我该如何解决?
  • @IBlackVikingl 这意味着你必须return 一个Map&lt;DateTime, dynamic&gt; 类型的变量,而不是Map&lt;dynamic, dynamic&gt;
  • 你的 testMap 在哪里声明?
  • 函数正上方Map testMap = {};
  • 让它Map&lt;DateTime, dynamic&gt; testMap = {};
猜你喜欢
  • 2018-12-01
  • 2021-08-17
  • 2019-12-19
  • 2019-07-04
  • 2022-11-12
  • 2013-12-20
  • 2021-07-26
  • 2020-08-22
  • 2013-07-02
相关资源
最近更新 更多