【问题标题】:Class 'int' has no instance getter 'millisecondsSinceEpoch'“int”类没有实例获取器“millisecondsSinceEpoch”
【发布时间】:2021-04-14 06:50:07
【问题描述】:

我想在 Flutter 中构建一个同步融合图表。我从 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'是什么意思? b

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

谁能帮帮我?? 非常感谢您的帮助...

【问题讨论】:

    标签: flutter firebase-realtime-database syncfusion-chart


    【解决方案1】:

    我的猜测是您使用primaryXAxis: DateTimeAxis(),,但您的 x/y 值都不是日期。 SfCartesianChart 尝试将 x 或 y 转换为日期(millisecondsSinceEpoch 相对于日期的使用)但它们都是 int。

    看看这个(搜索DateTimeAxis,有不同的例子):https://help.syncfusion.com/flutter/cartesian-charts/axis-customization

    【讨论】:

    • 但是如果我想按时间显示我的图表,我该怎么做?当 yAxis 从 firebase 检索数据时,xAxis 每秒/分钟流动一次
    • @Ayas 你从 firebase 为你的 xAxis 检索到什么样的数据?
    • 什么都没有。我不从 xAxis 的 firebase 检索数据/任何东西。 yAxis 在图表中每秒检索和更新数据。所以,我希望 xAxis 只显示时间(以秒为单位)。示例:yAxis 在 1 秒内显示 15,在它们旁边显示 24 在 2 秒内
    【解决方案2】:

    感谢您对我们的 Flutter 图表感兴趣。我们已经分析了您的查询和给定的代码,并想告诉您,您将 DateTimeAxis 用于 primaryXAxis,但您的数据源值不是 DateTime 值。因此,请在图表中使用 NumericAxis 来处理数值数据。要了解有关我们图表的更多信息,请查找help document.

    谢谢, 陀罗尼塔兰。 P

    【讨论】:

    • 但是如果我想按时间显示我的图表,我该怎么做?当 yAxis 从 firebase 检索数据时,xAxis 每秒/分钟流动一次
    • 您可以将 DateTimeAxis 用于 primaryXAxis,如果您想单独从 firebase 检索 y 值,而对于 x 值,您可以在本地映射,在这里我们附加示例,如您的要求,我们将 DateTime 值绑定到x 轴本地和 y 轴 bin 来自 firebase 数据库的数值。您可以作为参考,希望对您有所帮助。 Sample.
    • 我试试你的代码。但我遇到了新问题。请看这个Error@Dharani
    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 2020-03-09
    • 1970-01-01
    • 2020-10-21
    • 2020-09-24
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多