如何解决如何解决此错误:偏移量参数包含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 举报,一经查实,本站将立刻删除。