Skip to content

Path.addArc is broken in flutter web #57214

@pskink

Description

@pskink

Steps to Reproduce

setup:

Flutter 1.19.0-2.0.pre.15 • channel master • https://github.com/flutter/flutter.git
Framework • revision c969b8af7b (3 days ago) • 2020-05-11 15:28:10 -0700
Engine • revision ada8a0fd64
Tools • Dart 2.9.0 (build 2.9.0-8.0.dev a6d06b59ec)

code to run:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: CustomPaint(
          painter: CP(),
          child: SizedBox.expand(),
        ),
      ),
    );
  }
}

class CP extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    var rect = Offset.zero & size;
    var p = Path()
      ..fillType = PathFillType.evenOdd
      ..addRect(rect)
      ..addArc(Rect.fromCircle(center: rect.center, radius: rect.size.shortestSide / 2), 0.25 * pi, 1.5 * pi);
    canvas.drawPath(p, Paint()..color = Colors.green);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) => true;
}

command to run:

flutter -d chrome run

expected results:

flutter

actual results:

flutter_web

EDIT the same broken results occur if you use multiple Path.addOval() methods instead of Path.addArc() (one Path.addOval() works fine though...)

EDIT 2 i made some other tests and it seems that Path.addPath() works but only when used with non null matrix4 parameter:

  @override
  void paint(ui.Canvas canvas, ui.Size size) {
    var rect = Offset.zero & size;

    var tmpPath = Path()..addArc(Rect.fromCircle(center: rect.center, radius: rect.size.shortestSide / 2), 0.25 * pi, 1.5 * pi);
    var p = Path()
      ..fillType = PathFillType.evenOdd
      ..addRect(rect)
      ..addPath(tmpPath, Offset.zero, matrix4: Matrix4.identity().storage);
    canvas.drawPath(p, Paint()..color = Colors.green);
  }

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work lista: imagesLoading, displaying, rendering imagesc: renderingUI glitches reported at the engine/skia or impeller rendering levelplatform-webWeb applications specificallywaiting for PR to land (fixed)A fix is in flight

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions