当前位置: 首页 > news >正文

Flutter ClipRRect

ClipRRect是 Flutter 中用于将子组件裁剪为圆角矩形的核心 Widget,常用于实现图片、容器、卡片的圆角效果

一、核心属性

dart

const ClipRRect({ Key? key, BorderRadiusGeometry borderRadius = BorderRadius.zero, // 圆角 CustomClipper<RRect>? clipper, // 自定义裁剪(优先级更高) Clip clipBehavior = Clip.antiAlias, // 裁剪模式 Widget? child, // 子组件 }) ```{insert\_element\_0\_} - **`borderRadius`**:控制圆角大小,常用: - `BorderRadius.circular(12)`:**4角同圆**(最常用) - `BorderRadius.only(...)`:**单独指定**某几角 ```dart BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), )
  • BorderRadius.vertical(...)/BorderRadius.horizontal(...)

  • clipBehavior(裁剪质量 / 性能):

    • Clip.hardEdge无抗锯齿、最快(边角略锯齿)
    • Clip.antiAlias(默认):抗锯齿、平滑(推荐)
    • Clip.antiAliasWithSaveLayer极高质量、耗性能(少用)
  • clipper:自定义裁剪规则(复杂形状时用)


二、基础用法(圆角图片 / 容器)

1. 简单圆角容器

dart

ClipRRect( borderRadius: BorderRadius.circular(16), clipBehavior: Clip.antiAlias, child: Container( width: 200, height: 200, color: Colors.blue[300], alignment: Alignment.center, child: Text("ClipRRect", style: TextStyle(color: Colors.white, fontSize: 18)), ), )
2. 圆角图片(最常用)

dart

ClipRRect( borderRadius: BorderRadius.circular(12), child: Image.network( "https://picsum.photos/300/300", width: 150, height: 150, fit: BoxFit.cover, ), )
3. 不对称圆角(只裁顶部)

dart

ClipRRect( borderRadius: BorderRadius.vertical(top: Radius.circular(20)), child: Container( width: 250, height: 150, color: Colors.green[200], ), )

三、进阶:CustomClipper(自定义圆角)

需要不规则 / 动态圆角时,继承CustomClipper<RRect>

dart

class MyRRectClipper extends CustomClipper<RRect> { @override RRect getClip(Size size) { // 定义裁剪区域:居中、缩小、大圆角 final rect = Rect.fromLTWH(20, 20, size.width-40, size.height-40); return RRect.fromRectAndRadius(rect, Radius.circular(30)); } @override bool shouldReclip(covariant CustomClipper<RRect> oldClipper) => false; } // 使用 ClipRRect( clipper: MyRRectClipper(), // 优先级高于 borderRadius child: Container(width: 200, height: 200, color: Colors.orange), )

四、注意事项

  1. clipper存在时,borderRadius会被忽略Flutter
  2. 必须有确定尺寸:ClipRRect 依赖子组件 / 父组件的宽高约束
  3. 性能:频繁重绘时尽量用hardEdge或减少裁剪层数
  4. 替代方案
    • 简单圆角:Container(decoration: BoxDecoration(borderRadius: ...))
    • 圆形:ClipOvalCircleAvatar

五、常见场景对比

表格

需求推荐 Widget
统一圆角ClipRRect.circular
单独某角圆角ClipRRect.only
圆形图片ClipOval / CircleAvatar
不规则圆角CustomClipper<RRect>
性能优先Clip.hardEdge
http://www.jsqmd.com/news/625631/

相关文章:

  • 2025届学术党必备的十大降重复率方案实测分析
  • Unity发布京东小游戏汾
  • SDXL 1.0电影级绘图工坊功能体验:反向提示词使用详解
  • 保姆级避坑指南:在Ubuntu 20.04 + ROS Noetic下,用Livox Mid360雷达和PX4无人机做Gazebo仿真建图
  • 深入解析RS232串口通信:从单片机接收到发送的完整实践
  • 魔兽争霸3闪退修复终极指南:用WarcraftHelper轻松解决兼容性问题
  • CKKS 同态加密数学基础推导盟
  • OpenRocket火箭仿真软件:5步轻松设计你的第一枚模型火箭
  • Pixel Script Temple 解决编程错误:智能诊断与修复‘403 Forbidden’等常见问题
  • 深入解析扫描电子显微镜中的背散射电子探测器:原理、应用与电路设计
  • Spring教程-AOP
  • 软件行为驱动开发管理化的协作定义
  • SunnyUI中Pipe控件的动态数据可视化应用
  • 高性能FMC接口扩展卡详解:高速ADC/DAC设计、工程应用与参数对比
  • 云端隔断智慧工厂联系电话多少?2026年四川办公隔断源头工厂直供指南 - 精选优质企业推荐榜
  • Royal cove的实现(个人想法)
  • x86 - 64 架构下拆分锁性能测试:现状、挑战与未来
  • Nginx日志分割实战:如何用map指令按日期自动生成日志文件(附完整配置)
  • XUnity.AutoTranslator:如何为Unity游戏打造智能实时翻译系统
  • Java项目Loom升级实战:3步完成Spring WebFlux与虚拟线程深度整合(附压测对比数据)
  • 配电网电压与无功协调优化策略:降低运行成本、优化设备性能与场景对比分析
  • Qt 自定义控件动画深度解析:从 QPropertyAnimation 到源码内幕
  • 2026年四川成都办公玻璃隔断智能化方案深度横评:源头工厂直供与隐私保护的平衡之道 - 精选优质企业推荐榜
  • 音视频框架云原生应用
  • 2026年如何选择靠谱的6063铝型材厂家?从国耀铝业的实践看行业升级路径 - 企师傅推荐官
  • 【零信任AI服务网格架构】:基于eBPF+WebAssembly构建毫秒级策略引擎的9个关键决策点
  • 如何实现一个支持「撤回」功能的即时通讯系统?
  • 3分钟掌握JiYuTrainer:极域电子教室破解终极指南,告别课堂操作限制
  • [AI/应用/MCP] MCP Server/Tool 开发指南腋
  • 前端内存泄漏排查指南:Chrome DevTools高级用法