注意:在绘制扇形图时需要注意扇形图的起始角度和终止角度,需要累加上一次绘制的扇形图角度;
// 1. 设置画笔
Paint _paint = Paint()…color = Colors.grey
…strokeWidth = 4.0…style = PaintingStyle.fill;
// 2. 获取 ListData 总的数据值
_sumData() {
if (_listData != null) {
for (int i = 0; i < _listData.length; i++) {
_sum += _listData[i].values.first;
}
}
}
// 3. 根据各个子类别数据比例和旋转角度进行不同颜色的扇形图绘制
if (_listData != null) {
for (int i = 0; i < _listData.length; i++) {
startAngle += sweepAngle;
sweepAngle = _listData[i].values.first * 2 * PI / _sum;
canvas.drawArc(_circle, startAngle, sweepAngle, true,
_paint…color = _subPaint(_listData[i].keys.first));
}
}
}