Класс '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