firebase - 如何构建地图来自flutter中的firebase数据
问题描述
我正在尝试从firebase创建一个地图作为地图。
我试过这个
Future<Map<DateTime, List>> getlist() async {
QuerySnapshot querySnapshot = await Firestore.instance
.collection("${_username.toLowerCase()}-orders")
.getDocuments();
var list = new List.generate(querySnapshot.documents.length, (int index) => querySnapshot.documents[index]['date']);
var datelist = list.toSet().toList();
var map = new Map.fromIterable(datelist,
key: (item) => DateTime.parse(item),
value: (item) => () async {
QuerySnapshot querySnapshot2 = await Firestore.instance
.collection("${_username.toLowerCase()}-orders")
.where('date', isEqualTo: item)
.getDocuments();
var ordlist = new List.generate(querySnapshot2.documents.length, (int index) => querySnapshot2.documents[index]['name']);
return ordlist;
});
print(map);
return map;
}
我收到这样的错误
The return type 'Map<DateTime, () → Future<List<dynamic>>>' isn't a 'Future<Map<DateTime, List>>', as defined by the method 'getlist'.dart(return_of_invalid_type)
帮我
解决方案
在你的value:
论点中,你有一个错字。你写的是(item) => () async {...}
你可能的意思(item) async {...}
。你写的是一个箭头函数,它返回一个函数。
即使在那之后,您将拥有的是 aMap<Datetime, Future<List<dynamic>>
并且您需要解决所有这些问题Future
才能获得Map<DateTime, List<dynamic>>
. 我注意到您正在为每个日期进行新查询,但我认为您应该在第一次查询后已经有了这些值......
看起来groupBy
frompackage:collection
会让你非常接近,你仍然需要再.map
调用一次来提取'name'
字段......
Future<Map<DateTime, List>> getlist() async {
var querySnapshot = await Firestore.instance
.collection("${_username.toLowerCase()}-orders")
.getDocuments();
var items = querySnapshot.documents;
var grouped = groupBy(items, (item) => item['date']);
var map =
grouped.map((date, item) => MapEntry(DateTime.parse(date), item['name']));
print(map);
return map;
}
推荐阅读
- perl - 如何在 nginx mod_perl 中获取 http_referer
- php - 如何将上次修改日期添加到我的 WooCommerce 产品
- sql - 为缺少的聚合创建空/默认行的最佳方法是什么
- java - 如何将密码添加到 base 64 pdf?
- sql-server - 我可以通过 SQL Server Management 和 SQL Profiler 连接到我的 SQL Server 实例,但我的 VS 应用程序无法连接
- mysql - 如何将 .so 文件发送到 Google Cloud 上的 MySQL 实例?
- php - 使用 Doctrine-Fixture 加载数据时,requestStack getCurrentRequest 在服务中为空
- python - Python Dash 应用程序调用 API 时出现 Heroku 409 错误
- c# - FATAL:所有操作都需要 OperationId。请添加它以进行路径的“获取”操作
- linux - 我如何称呼在 Linux 终端中表示新命令行的东西,我可以自定义它吗?