Класс 'int' не имеет экземпляра получателя 'millisecondsSinceEpoch'

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

      import 'dart:async';

import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';

class Chart extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: HolyChart(),
      ),
    );
  }
}

class HolyChart extends StatefulWidget {
  @override
  _HolyChartState createState() => _HolyChartState();
}

class _HolyChartState extends State<HolyChart> {
  Timer _timer;
  int _count = 0;
  ChartSeriesController _seriesController;
  final _dbReference = FirebaseDatabase.instance.reference();
  List _chartData = <ChartData>[];
  int _values;

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

  _updateData(Timer timer) {
    _chartData.add(ChartData(_count, _values));

    if (_chartData.length == 20) {
      _chartData.removeAt(0);
      _seriesController.updateDataSource(
          addedDataIndexes: <int>[_chartData.length - 1],
          removedDataIndexes: <int>[0]);
    }

    _count = _count + 1;
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: _dbReference.child("Data").onValue,
      builder: (context, snapshot) {
        Widget widget;

        if (snapshot.hasData &&
            !snapshot.hasError &&
            snapshot.data.snapshot.value != null) {
          _values = snapshot.data.snapshot.value["Moisture"];

          if (_values != null) {
            _timer = Timer.periodic(Duration(seconds: 3), _updateData(_timer));
          }

          widget = Container(
            child: SfCartesianChart(
              tooltipBehavior: TooltipBehavior(enable: true),
              primaryXAxis: DateTimeAxis(),
              series: <LineSeries<ChartData, int>>[
                LineSeries<ChartData, int>(
                  dataSource: _chartData,
                  xValueMapper: (ChartData data, _) => data.xAxisValue,
                  yValueMapper: (ChartData data, _) => data.yAxisValue,
                )
              ],
            ),
          );
        } else {
          widget = Center(child: CircularProgressIndicator());
        }

        return widget;
      },
    );
  }
}

class ChartData {
  ChartData(this.xAxisValue, this.yAxisValue);
  ChartData.fromMap(this.xAxisValue, this.yAxisValue);

  final int xAxisValue;
  final int yAxisValue;
}

и это проблема моего кода. что значит функция "millisecondsSinceEpoch"? б

      The following NoSuchMethodError was thrown building LayoutBuilder:
Class 'int' has no instance getter 'millisecondsSinceEpoch'.
Receiver: 0
Tried calling: millisecondsSinceEpoch

Может кто-нибудь мне помочь?? Спасибо большое за вашу помощь...

2 ответа

Спасибо за интерес к нашим диаграммам Flutter. Мы проанализировали ваш запрос и данный код и хотели бы сообщить вам, что вы используете DateTimeAxis для primaryXAxis, но значения вашего источника данных не являются значением DateTime. Итак, любезно используйте NumericAxis в диаграмме для обработки числовых данных. Чтобы узнать больше о наших диаграммах, обратитесь к справочному документу.

Спасибо, Дхаранитаран. п

Я предполагаю, что вы используете primaryXAxis: DateTimeAxis(),но ни одно из ваших значений x / y не является датой. В SfCartesianChart пытается преобразовать x или y как дату ( millisecondsSinceEpoch относится к использованию даты), но оба они являются int.

Взгляните на это (ищите DateTimeAxis, есть разные примеры): https://help.syncfusion.com/flutter/cartesian-charts/axis-customization

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