диаграммы syncfusion не могут получать данные из firebase

у меня есть диаграммы синхронизации. Я хочу получить данные из firebase, но данные только для xAxis и yAxis просто типа datetime. У меня проблема, диаграмма не может получить данные из firebase. они показывают только диаграмму без строки данных. это мой код:

        @override
  Widget build(BuildContext context) {
    return MaterialApp(debugShowCheckedModeBanner: false, home: LiveChart());
  }
}

class LiveChart extends StatefulWidget {
  LiveChart({this.app});
  final FirebaseApp app;
  @override
  _LiveChartState createState() => _LiveChartState();
}

class _LiveChartState extends State<LiveChart> {
  int value;
  Timer timer;
  int count = 0;
  final dbRef = FirebaseDatabase.instance.reference();
  List<_ChartData> chartData = <_ChartData>[];
  Map<dynamic, dynamic> data;

  onUpdate() {
    setState(() {
      value = value;
    });
  }


  void _updateDataSource(Timer timer) {
    setState(() {
      if (count >= 59) {
        count = 0;
      }
      chartData.add(_ChartData(x: DateTime(2021, 1, 1, count), y1: data['y1']));

      if (chartData.length == 20) {
        chartData.removeAt(0);
      }
      count = count + 1;
    });
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: _showChart());
  }

  Widget _showChart() {
    return StreamBuilder(
        stream: dbRef.child("Data").onValue,
        builder: (context, snapshot) {
          Widget widget;

          if (snapshot.hasData &&
              !snapshot.hasError &&
              snapshot.data.snapshot.value != null) {
            List<dynamic> snaps =
                new List(snapshot.data.snapshot.value["Moisture"]);

            if (snaps != null && count < snaps.length) {
              data = snaps[count];
              timer = Timer.periodic(
                  Duration(milliseconds: 4000), _updateDataSource);
            }

            widget = Container(
              child: SfCartesianChart(
                tooltipBehavior: TooltipBehavior(enable: true),
                primaryXAxis: DateTimeAxis(),
                series: <LineSeries<_ChartData, DateTime>>[
                  LineSeries<_ChartData, DateTime>(
                    dataSource: chartData,
                    xValueMapper: (_ChartData data, _) => data.x,
                    yValueMapper: (_ChartData data, _) => data.y1,
                  )
                ],
              ),
            );
          } else {
            widget = Center(child: CircularProgressIndicator());
          }

          return widget;
        });
  }

  @override
  void dispose() {
    super.dispose();
    timer?.cancel();
  }
}

class _ChartData {
  _ChartData({this.x, this.y1});
  final DateTime x;
  final int y1;
}

даже когда они не могут получить данные из firebase, у меня возникла проблема с ошибкой при отладке кода. это ошибка:

      E/flutter (25491): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
E/flutter (25491): Receiver: null
E/flutter (25491): Tried calling: []("y1")

я надеюсь, что кто-нибудь может помочь моей проблеме. Спасибо!

0 ответов

Другие вопросы по тегам