我试图用API JSON数据显示一个图表。我做了一些迭代并将结果保存在一个全局变量上,然后将这个变量放在图表中,但变量返回空值,没有任何数据。如果我在foreach中打印列表有数据,但如果我在widget中打印,则为空。我读
this
但代码看起来很不一样,所以我无法理解。
变量
List<charts.Series<TimeSeriesSales, DateTime>> seriesList;
List<TimeSeriesSales> data = [];
获取数据
final String url = 'URL';
class TimeSeriesSales {
final DateTime fecha;
final double valor;
TimeSeriesSales(this.fecha, this.valor);
}
Future<Null> getUserDetails() async {
final response = await http.get(
url,
headers: {
HttpHeaders.authorizationHeader:
"HEADER "
},
);
final responseJson = json.decode(response.body);
setState(() {
for (Map user in responseJson) {
var fecha= new DateTime.fromMillisecondsSinceEpoch(user['fecha']).toLocal();
data.add(TimeSeriesSales(new DateTime(fecha.year, fecha.month,fecha.day), user['valor']));
print (data.toString());
}
});
}
初始状态
void initState() {
super.initState();
getUserDetails();
seriesList = _createSampleData();
animate = false;
}
填充时间
List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
return [
new charts.Series<TimeSeriesSales, DateTime>(
id: 'Sales',
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
domainFn: (TimeSeriesSales valor, _) => valor.fecha,
measureFn: (TimeSeriesSales valor, _) => valor.valor,
data: data,
)
];
}
}
小装置
Widget build(BuildContext context) {
return new Scaffold(
new Expanded(
child: new charts.TimeSeriesChart(
seriesList,
animate: animate,
defaultRenderer: new charts.BarRendererConfig<DateTime>(),
domainAxis: new charts.DateTimeAxisSpec(usingBarRenderer: true),
defaultInteractions: false,
behaviors: [
new charts.SelectNearest(),
new charts.DomainHighlighter()
],
),
),
)
有人知道为什么列表在widget中没有数据吗?有人知道在init上迭代图表的正确方法是什么?