图表按预期显示带有以下PieChart小工具。
class ABCPieChart extends StatefulWidget {
@override
_ABCPieChartState createState() => _ABCPieChartState();
}
class _TABCPieChartState extends State<ABCPieChart> {
List<charts.Series<ChartEntity, String>> _entities = List();
_initData() {
var values = [
ChartEntity("Food", 30, Colors.greenAccent),
ChartEntity("Clothing", 30, Colors.cyan),
ChartEntity("Fashion", 20, Colors.red),
ChartEntity("Gadgets", 20, Colors.blue),
];
_entities.add(charts.Series(
data: values,
domainFn: (ChartEntity entity, _) => entity.title,
measureFn: (ChartEntity entity, _) => entity.percentage,
colorFn: (ChartEntity entity, _) =>
charts.ColorUtil.fromDartColor(entity.color),
id: "random chart",
labelAccessorFn: (ChartEntity entity, _) => "${entity.percentage}"));
}
@override
void initState() {
super.initState();
_entities = List<charts.Series<ChartEntity, String>>();
_initData();
}
@override
Widget build(BuildContext context) {
return Container(
height: 400.0,
width: 400,
child: charts.PieChart(
_entities,
animate: true,
animationDuration: Duration(milliseconds: 500),
),
);
}
}
但是,当我尝试将其自定义为甜甜圈形状时,即使添加了一个非常基本的defaultRenderer
,图表也不再呈现在屏幕上。
class ABCPieChart extends StatefulWidget {
@override
_ABCPieChartState createState() => _ABCPieChartState();
}
class _TABCPieChartState extends State<ABCPieChart> {
List<charts.Series<ChartEntity, String>> _entities = List();
_initData() {
var values = [
ChartEntity("Food", 30, Colors.greenAccent),
ChartEntity("Clothing", 30, Colors.cyan),
ChartEntity("Fashion", 20, Colors.red),
ChartEntity("Gadgets", 20, Colors.blue),
];
_entities.add(charts.Series(
data: values,
domainFn: (ChartEntity entity, _) => entity.title,
measureFn: (ChartEntity entity, _) => entity.percentage,
colorFn: (ChartEntity entity, _) =>
charts.ColorUtil.fromDartColor(entity.color),
id: "random chart",
labelAccessorFn: (ChartEntity entity, _) => "${entity.percentage}"));
}
@override
void initState() {
super.initState();
_entities = List<charts.Series<ChartEntity, String>>();
_initData();
}
@override
Widget build(BuildContext context) {
return Container(
height: 400.0,
width: 400,
child: charts.PieChart(
_entities,
animate: true,
animationDuration: Duration(milliseconds: 500),
defaultRenderer: charts.ArcRendererConfig(),
),
);
}
}
即使当我从谷歌示例here复制和粘贴代码,它不呈现.(既不是在hotreload,也不是在Hotrestart,也不是Coldrestart)
此问题仅适用于PieChart and ArcRendererConfig.
BarChart
与BarRendererConfig
配合使用时正常
我想这可能是安装问题,或者可能错过了一个非常小但至关重要的东西,有没有人知道可能出了什么问题?
我在Github here中交叉发布了这个问题,希望这个问题能被GitHub和SO中任何不相干的观众看到(我就是其中之一)。
4条答案
按热度按时间flvlnr441#
必须添加PieChart的类型参数。
更新:-说明
因此在OP的情况下,使用
child: charts.PieChart<String>(
代替child: charts.PieChart(
。我们使用
<String>
作为类型参数,因为图表的系列是charts.Series<ChartEntity, String>
如果序列是
charts.Series<ChartEntity, int>
,则应使用<int>
作为类型参数wxclj1h52#
在我的例子中,问题是相同的,但通过在
defaultRenderer
中放置id
解决了问题,例如:yptwkmov3#
Here a solution possibly
我得到了(在我的情况下是一个条形图):
vltsax254#
只需删除
defaultRenderer
,它就可以工作了