Skip to content

SweepGradient startAngle doesn't work as expected. #23648

@seniorbee

Description

@seniorbee

I want to create something like this.
gear
I use shader created from SweepGradient. Here's my code.

    import 'package:flutter/material.dart';
    import 'dart:math';

    class Arc extends CustomPainter {

    double doubleToAngle(double angle) => angle * pi / 180.0;

    void drawArcWithRadius(
        Canvas canvas, Offset center, double radius, double angle, Paint paint) {
        canvas.drawArc(Rect.fromCircle(center: center, radius: radius),
          doubleToAngle(-90.0), doubleToAngle(angle), false, paint);
    }

    @override
    void paint(Canvas canvas, Size size) {
      final Offset center = Offset(size.width / 2.0, size.height / 2.0);
      final double radius = size.width / 3.0;
      double angle = 210.0;
      Paint paint = Paint()
        ..strokeCap = StrokeCap.round
        ..strokeWidth = 40.0
        ..style = PaintingStyle.stroke
        ..color = Colors.red
        ..shader = new SweepGradient(colors: [
          Color(0xFFB4EC51),
          Color(0xFF3023AE),
        ], startAngle: 0.0, endAngle: doubleToAngle(angle))
            .createShader(Rect.fromCircle(center: center, radius: radius));
  
      drawArcWithRadius(canvas, center, radius, angle, paint);
    }

    @override
    bool shouldRepaint(CustomPainter oldDelegate) {
      return true;
    }
    }

But it ends up something like this.
hvh6i
It seems like sweepAngle doesn't have any effect.

Metadata

Metadata

Assignees

Labels

d: api docsIssues with https://api.flutter.dev/frameworkflutter/packages/flutter repository. See also f: labels.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions