@@ -123,7 +123,7 @@ class _WindmillChartState extends State<_WindmillChart> {
123123 yValueMapper: (_WindEnergy data, int index) => data.megawatt,
124124 animationDuration: 0 ,
125125 onCreateRenderer: (ChartSeries <_WindEnergy , String > series) {
126- return _ColumnSeriesRenderer ();
126+ return _CustomColumnSeriesRenderer ();
127127 },
128128 ),
129129 ],
@@ -167,7 +167,8 @@ class _WindEnergy {
167167}
168168
169169// Custom renderer for column series
170- class _ColumnSeriesRenderer extends ColumnSeriesRenderer <_WindEnergy , String > {
170+ class _CustomColumnSeriesRenderer
171+ extends ColumnSeriesRenderer <_WindEnergy , String > {
171172 @override
172173 ColumnSegment <_WindEnergy , String > createSegment () => _ColumnSegment ();
173174}
@@ -224,52 +225,53 @@ class _ColumnSegment extends ColumnSegment<_WindEnergy, String> {
224225 canvas.drawPath (_postPath, postFillPaint);
225226 canvas.drawPath (_postPath, postStrokePaint);
226227
228+ final Offset center = Offset (centerX, centerY);
229+ double bladeWidth = 20 ;
227230 double bladeLength =
228231 10 * (currentSegmentIndex < 3 ? 3 : currentSegmentIndex.toDouble ());
229- double bladeWidth = 20 ;
230232
231233 // Define the angles for the three blades in radians.
232234 double angle1 = 0 ;
233235 double angle2 = 120 * pi / 180 ;
234236 double angle3 = 240 * pi / 180 ;
235237
236238 // Draw first blade.
237- _drawBlade (canvas, bladeLength, bladeWidth, centerX, centerY, angle1 ,
238- bladeFillPaint, bladeStrokePaint);
239+ _drawBlade (canvas, center, angle1, bladeLength, bladeWidth, bladeFillPaint ,
240+ bladeStrokePaint);
239241
240242 // Draw second blade.
241- _drawBlade (canvas, bladeLength, bladeWidth, centerX, centerY, angle2 ,
242- bladeFillPaint, bladeStrokePaint);
243+ _drawBlade (canvas, center, angle2, bladeLength, bladeWidth, bladeFillPaint ,
244+ bladeStrokePaint);
243245
244246 // Draw third blade.
245- _drawBlade (canvas, bladeLength, bladeWidth, centerX, centerY, angle3 ,
246- bladeFillPaint, bladeStrokePaint);
247+ _drawBlade (canvas, center, angle3, bladeLength, bladeWidth, bladeFillPaint ,
248+ bladeStrokePaint);
247249
248250 // Draws circle at the center of the windmill.
249- canvas.drawCircle (
250- Offset (centerX, centerY), 5 , Paint ()..color = Colors .white);
251+ canvas.drawCircle (center, 5 , Paint ()..color = Colors .white);
251252 }
252253
253254 // Helper method to draw each blade
254255 void _drawBlade (
255- Canvas canvas,
256- double bladeLength ,
257- double bladeWidth ,
258- double centerX ,
259- double centerY ,
260- double angle ,
261- Paint fillPaint ,
262- Paint strokePaint ) {
256+ Canvas canvas,
257+ Offset center ,
258+ double angle ,
259+ double bladeLength ,
260+ double bladeWidth ,
261+ Paint fillPaint ,
262+ Paint strokePaint ,
263+ ) {
263264 Matrix4 transformMatrix = Matrix4 .identity ()
264- ..translate (centerX, centerY )
265+ ..translate (center.dx, center.dy )
265266 ..rotateZ (angle);
266267
267- Path bladePath = Path ()
268+ final double halfWidth = bladeWidth / 2 ;
269+ final double quarterWidth = bladeWidth / 4 ;
270+ final Path bladePath = Path ()
268271 ..moveTo (0 , 0 )
269- ..cubicTo (bladeWidth / 4 , - bladeLength, bladeWidth / 2 , - bladeLength, 0 ,
270- - bladeLength)
271272 ..cubicTo (
272- - bladeWidth / 4 , - bladeLength, - bladeWidth / 2 , - bladeLength, 0 , 0 );
273+ quarterWidth, - bladeLength, halfWidth, - bladeLength, 0 , - bladeLength)
274+ ..cubicTo (- quarterWidth, - bladeLength, - halfWidth, - bladeLength, 0 , 0 );
273275
274276 _bladesPath.addPath (bladePath, Offset .zero,
275277 matrix4: transformMatrix.storage);
0 commit comments