Flutter - повторять график с помощью json - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь показать график с данными 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?

1 Ответ

0 голосов
/ 20 ноября 2018

Вы не воссоздаете серию после того, как получили и проанализировали данные.Вызовите seriesList = _createSampleData(); еще раз после итерации responseData внутри setState.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...