Flutter 如何去除CustomPaint中的多余形状?

Flutter 如何去除CustomPaint中的多余形状?,flutter,Flutter,我试着画一个半圆在一个长方形的颤振像这样 但在我的代码中,圆圈超出了白色矩形,变成了黑色背景,如下所示 我应该对代码做什么更改才能得到第一张图片那样的结果 我的代码:- import 'package:flutter/material.dart'; class Test extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home

我试着画一个半圆在一个长方形的颤振像这样

但在我的代码中,圆圈超出了白色矩形,变成了黑色背景,如下所示

我应该对代码做什么更改才能得到第一张图片那样的结果

我的代码:-

import 'package:flutter/material.dart';

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
          child: Scaffold(  
            backgroundColor: Colors.black,
            body: Center(  
              child: Container(  
                height: 200,
                width: 200,

                color: Colors.white,
                child: CustomPaint(
                  painter: Circ(),
                    child: Column(  
                    children: <Widget>[

                    ],
                  ),
                ),
              
              ),
            ),
          )
    ),
    );
  }
}

class Circ extends CustomPainter{
  
  @override 
  void paint(Canvas canvas, Size size) {
    final paint = Paint();
    
    
    
    paint.color = Colors.blue.withOpacity(0.2);
    
    var center1 = Offset(200,100);
    
    canvas.drawCircle(center1,100, paint); 

    
  }

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


导入“包装:颤振/材料.省道”;
类测试扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:安全区(
儿童:脚手架(
背景颜色:Colors.black,
正文:中心(
儿童:货柜(
身高:200,
宽度:200,
颜色:颜色,白色,
孩子:定制油漆(
画家:Circ(),
子栏(
儿童:[
],
),
),
),
),
)
),
);
}
}
类Circ扩展了CustomPainter{
@凌驾
空心油漆(帆布,尺寸){
最终油漆=油漆();
paint.color=颜色。蓝色。不透明度(0.2);
var center1=偏移量(200100);
画布.画圈(中心1100,油漆);
}
@凌驾
bool应重新绘制(自定义代理){
返回null;
}
}

你的圆圈似乎画在了你想限制绘画的区域之外

如果只希望在画布的指定部分进行绘制,则称为“剪裁”

添加剪辑:

canvas.clipRect(Rect.fromLTWH(0, 0, size.width, size.height));

canvas.drawCircle(center1, 100, paint); 
这样,您的圆将不会绘制在给定大小之外