Я пытаюсь показать график с данными API JSON.Я сделал несколько итераций и сохранил результат в глобальной переменной, затем поместил эту переменную в диаграмму, но переменная, возвращающая ноль, не имеет никаких данных.Если я печатаю список в foreach, есть данные, но если я печатаю в виджете, это ноль.Я прочитал это , но код выглядит совсем иначе, поэтому я не могу следовать.
Переменные
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;
}
Fill TimeSeries
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()
],
),
),
)
Кто-нибудь знает, почему в списке нет данных в виджете?А кто-нибудь знает, как правильно перебрать диаграмму в init?