嗨,我最近正尝试使用synchfusion包来工作我的Barhcart,当我使用barchart时,我的子类型似乎不是num,在这里我不认为我已将列表声明为num,chartData编号除外
import 'dart:ffi';
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class barchart_new extends StatefulWidget {
@override
_barchart_newState createState() => _barchart_newState();
}
class _barchart_newState extends State<barchart_new> {
final List<SalesData> chartData = [
SalesData('Driving', 35, 23),
SalesData('Office work', 38, 49),
SalesData('meeting', 34, 12),
SalesData('onsite work', 52, 33),
SalesData('seminar', 40, 30)
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
child: SfCartesianChart(series: <ChartSeries>[
BarSeries<SalesData, String>(
dataSource: chartData,
xValueMapper: (SalesData year, _) => year.year,
yValueMapper: (SalesData sales, _) => sales.sales,
borderRadius: BorderRadius.all(Radius.circular(15)))
]))));
}
}
class SalesData {
SalesData(this.year, this.sales, this.colors);
final String year;
final double sales;
final double colors;
}
非常感谢有人可以帮助我纠正此问题。
答案 0 :(得分:1)
对于收到此错误并且实际上想要 X 轴上的字符串值的其他任何人,您可以尝试将 primaryXAxis 指定为 CategoryAxis:
@override
Widget build(BuildContext context) {
// For horizontal bar charts, set the [vertical] flag to false.
return new SfCartesianChart(
series: _createSeriesFromData(),
primaryXAxis: CategoryAxis(
majorGridLines: MajorGridLines(width: 0),
),
primaryYAxis: NumericAxis(
majorGridLines: MajorGridLines(width: 0),
numberFormat: NumberFormat.compact()),
);
}
答案 1 :(得分:0)
// import 'dart:ffi'; delete this line. you are probebly not using ffi.
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class barchart_new extends StatefulWidget {
@override
_barchart_newState createState() => _barchart_newState();
}
class _barchart_newState extends State<barchart_new> {
final List<SalesData> chartData = [
SalesData('Driving', 35, 23),
SalesData('Office work', 38, 49),
SalesData('meeting', 34, 12),
SalesData('onsite work', 52, 33),
SalesData('seminar', 40, 30)
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
child: SfCartesianChart(series: <ChartSeries>[
BarSeries<SalesData, String>(
dataSource: chartData,
// your year is a string. convert it using the `int.tryParse` function
xValueMapper: (SalesData year, _) => int.tryParse(year.year),
yValueMapper: (SalesData sales, _) => sales.sales,
borderRadius: BorderRadius.all(Radius.circular(15)))
]))));
}
}
class SalesData {
SalesData(this.year, this.sales, this.colors);
final String year;
final double sales;
final double colors;
}