You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中将现有半圆形裁剪效果翻转成U形(倒半圆)

Flutter 实现倒半圆(U形)效果的修改方案

你现有代码实现了上凸的半圆效果,要改成底部凹进的U形,只需修改裁剪器的路径绘制逻辑即可,以下是完整修改后的代码:

body: Column(
  children: [
    Expanded(
      flex: 7,
      child: ClipPath(
        clipper: BottomUshapeClipper(),
        child: Container(
          color: const Color(0xFF09BAB5),
        ),
      ),
    ),
    Expanded(
      flex: 3,
      child: Container(
        color: Colors.white,
      ),
    ),
  ],
);

class BottomUshapeClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    final path = Path();
    // 起点定位到左上角
    path.moveTo(0, 0);
    // 绘制顶部直线到右上角
    path.lineTo(size.width, 0);
    // 绘制右侧直线到右下角
    path.lineTo(size.width, size.height);
    // 从右下角顺时针绘制半圆到左下角,形成U形凹口
    path.arcToPoint(
      Offset(0, size.height),
      radius: Radius.elliptical(size.width / 2, size.height),
      clockwise: true,
    );
    // 闭合路径完成裁剪区域
    path.close();
    return path;
  }

  @override
  bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}

修改说明

  1. 调整了arcToPoint的绘制方向:将clockwise从false改为true,让弧从右下角向左下角顺时针绘制,形成向下凹的弧度
  2. 修正椭圆半径宽度为size.width / 2,确保凹口是标准的半圆形状
  3. 简化路径逻辑,移除多余的直线绘制,通过path.close()自动闭合路径

内容的提问来源于stack exchange,提问作者behnam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:32:33