有一个 Day 类和一个 Day 对象列表,我需要将这些对象的地图转换为列表。
class Day{
double open;
double high;
double low;
double close;
double volumeTo;
Day({this.open, this.high, this.low, this.close, this.volumeTo});
}
List historical = [
new Day(open: 42.6, high: 53.9, low: 39.5, close:56.00, volumeTo: 5000.0),
new Day(open: 42.6, high: 53.9, low: 39.5, close:56.00, volumeTo: 5000.0),
new Day(open: 42.6, high: 53.9, low: 39.5, close:56.00, volumeTo: 5000.0),
new Day(open: 42.6, high: 53.9, low: 39.5, close:56.00, volumeTo: 5000.0),
];
Run Code Online (Sandbox Code Playgroud)
最后我需要这样的例子:
List sampleData = [
{"open":42.6, "high":53.9, "low":39.5, "close":56.00, "volumeto":5000.0},
{"open":42.6, "high":53.9, "low":39.5, "close":56.00, "volumeto":5000.0},
{"open":42.6, "high":53.9, "low":39.5, "close":56.00, "volumeto":5000.0},
{"open":42.6, "high":53.9, "low":39.5, "close":56.00, "volumeto":5000.0},
];
Run Code Online (Sandbox Code Playgroud)
使用map方法,像这样:
final sampleData = historical.map((h) => {"open": h.open, "high": h.high, "low": h.low, "close": h.close, "volumeTo": h.volumeTo}).toList();
Run Code Online (Sandbox Code Playgroud)
小智 2
如果您使用的是 android studio,您可以安装插件来帮助生成 toMap() 和 fromMap() 代码。插件的名称是Dart Data Class
安装插件后,生成这样的辅助函数
class Day{
double open;
double high;
double low;
double close;
double volumeTo;
Day({this.open, this.high, this.low, this.close, this.volumeTo});
factory Day.fromMap(Map<String, dynamic> map) {
return new Day(
open: map['open'] as double,
high: map['high'] as double,
low: map['low'] as double,
close: map['close'] as double,
volumeTo: map['volumeTo'] as double,
);
}
Map<String, dynamic> toMap() {
// ignore: unnecessary_cast
return {
'open': this.open,
'high': this.high,
'low': this.low,
'close': this.close,
'volumeTo': this.volumeTo,
} as Map<String, dynamic>;
}
}
// this helper method helps convert to a list of Map
dynamic getListMap(List<dynamic> items) {
if (items == null) {
return null;
}
List<Map<String, dynamic>> dayItems = [];
items.forEach((element) {
dayItems.add(element.toMap());
});
return dayItems;
}
Run Code Online (Sandbox Code Playgroud)
并像这样调用函数
void somthoing(){
var listOfMap = getListMap(historical);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6297 次 |
| 最近记录: |