微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决此错误:偏移量参数包含NaN值 'dart:ui / painting.dart':断言失败:第43行:'<optimized out>'

如何解决如何解决此错误:偏移量参数包含NaN值 'dart:ui / painting.dart':断言失败:第43行:'<optimized out>'

我试图用工具提示创建一个时间序列图,但是我无法克服这个错误消息。 “偏移量参数包含NaN值。'dart:ui / painting.dart':失败的断言:第43行:”。 https://github.com/google/charts/issues/58是我从中获取代码的地方,但似乎没有其他人遇到此问题。当尝试在该github页面上找到其他类型的图表和不同的代码块时,总是会出现相同的错误消息。这是相关的代码

import 'package:charts_Flutter/Flutter.dart' as charts;
import 'package:Flutter/material.dart';
import 'dart:math';
import 'package:charts_Flutter/Flutter.dart';
import 'package:charts_Flutter/src/text_element.dart' as text;
import 'package:charts_Flutter/src/text_style.dart' as style;

class CustomMeasureTickCount extends StatelessWidget {
  final List<charts.Series> seriesList;
  final bool animate;
  static String pointerValue;
  CustomMeasureTickCount(this.seriesList,{this.animate});

  factory CustomMeasureTickCount.withSampleData() {
    return new CustomMeasureTickCount(
      _createSampleData(),animate: false,);
  }

  @override
  Widget build(BuildContext context) {
    return new charts.TimeSeriesChart(seriesList,animate: animate,behaviors: [
          LinePointHighlighter(symbolRenderer: CustomCircleSymbolRenderer())
        ],selectionModels: [
          SelectionModelConfig(changedListener: (SelectionModel model) {
            if (model.hasDatumSelection)
              pointerValue = model.selectedSeries[0]
                  .measureFn(model.selectedDatum[0].index)
                  .toString();
          })
        ],/// Customize the measure axis to have 10 ticks
        primaryMeasureAxis: new charts.NumericAxisspec(
            tickProviderSpec:
                new charts.BasicNumericTickProviderSpec(desiredTickCount: 10)));
  }

  /// Create one series with sample hard coded data.
  static List<charts.Series<MyRow,DateTime>> _createSampleData() {
    final data = [
      new MyRow(new DateTime(2017,9,25),6),new MyRow(new DateTime(2017,26),8),27),28),9),29),11),30),15),10,01),02),33),03),04),31),05),23),];

    return [
      new charts.Series<MyRow,DateTime>(
        id: 'Cost',domainFn: (MyRow row,_) => row.timeStamp,measureFn: (MyRow row,_) => row.cost,data: data,colorFn: (_,__) => charts.MaterialPalette.indigo.shadeDefault,)
    ];
  }
}

/// Sample time series data type.
class MyRow {
  final DateTime timeStamp;
  final int cost;
  MyRow(this.timeStamp,this.cost);
}

class CustomCircleSymbolRenderer extends CircleSymbolRenderer {
  @override
  void paint(ChartCanvas canvas,Rectangle bounds,{List dashPattern,Color fillColor,FillPatternType fillPattern,Color strokeColor,double strokeWidthPx}) {
    super.paint(canvas,bounds,dashPattern: dashPattern,fillColor: fillColor,fillPattern: fillPattern,strokeColor: strokeColor,strokeWidthPx: strokeWidthPx);
    canvas.drawRect(
        Rectangle(bounds.left - 5,bounds.top - 30,bounds.width + 10,bounds.height + 10),fill: Color.white);
    var textStyle = style.TextStyle();
    textStyle.color = Color.black;
    textStyle.fontSize = 15;
    canvas.drawText(
        text.TextElement(CustomMeasureTickCount.pointerValue,style: textStyle),(bounds.left).round(),(bounds.top - 28).round());
  }
}

解决方法

发生错误是因为在文本字段处于焦点时发生了新事件,例如导航到新页面。要解决这个问题,只需从文本字段中删除焦点即可。

例如 FocusScope.of(context).requestFocus(new FocusNode());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。