做了几次谷歌搜索,没有任何有用的东西出现。在尝试做一些应该非常简单的事情时,我一直在打击一些错误。将诸如地图之类的地图转换为{2019-07-26 15:08:42.889861: 150, 2019-07-27 10:26:28.909330: 182}具有以下格式的对象列表:
class Weight {
final DateTime date;
final double weight;
bool selected = false;
Weight(this.date, this.weight);
}
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情: List<Weight> weightData = weights.map((key, value) => Weight(key, value));
toList()显然,没有地图的方法。到目前为止,我不喜欢 dart 中的地图。对象类型映射和映射函数之间的命名混乱。使互联网上的故障排除令人难以忍受。
yba*_*kos 81
继理查德·希普 (Richard Heap) 的上述评论之后,我会:
List<Weight> weightData =
mapData.entries.map( (entry) => Weight(entry.key, entry.value)).toList();
Run Code Online (Sandbox Code Playgroud)
不要忘记调用toList,因为 Dartmap返回一种 Iterable。
Vid*_*rom 11
List<Weight> weightData = List();
weights.forEach((k,v) => weightData.add(Weight(k,v)));
Run Code Online (Sandbox Code Playgroud)
您还可以使用for集合来实现相同的目的。
var list = [for (var e in map.entries) FooClass(e.key, e.value)];
Run Code Online (Sandbox Code Playgroud)
小智 5
有时类型转换会失败,您可以通过执行以下操作来强制执行:
List<Weight> weightData =
weightData.entries.map<Weight>( (entry) => Weight(entry.key, entry.value)).toList();
Run Code Online (Sandbox Code Playgroud)
我的项目中没有类型转换就无法工作的示例:
List<NetworkOption> networkOptions = response.data['data']['networks']
.map<NetworkOption>((x) => NetworkOption.fromJson(x))
.toList();
Run Code Online (Sandbox Code Playgroud)
entries在map对象上使用属性
这将返回 aList类型MapEntry<key,value>。
myMap.entries.map((entry) => "${entry.key} + ${entry.value}").toList();
Run Code Online (Sandbox Code Playgroud)
/libs/extensions/map.dart
extension ListFromMap<Key, Element> on Map<Key, Element> {
List<T> toList<T>(
T Function(MapEntry<Key, Element> entry) getElement) =>
entries.map(getElement).toList();
}
Run Code Online (Sandbox Code Playgroud)
import 'package:myApp/libs/extensions/map.dart';
final map = {'a': 1, 'b': 2};
print(map.toList((e) => e.value));
print(map.toList((e) => e.key));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59864 次 |
| 最近记录: |