Flutter基础学习8_自定义组件

648 阅读1分钟

一、 自定义组件

  1. 自定义组件有三种方法: a、 通过组合其他组件 ; b、 自己绘制 ; c、实现RenderObject;
  2. 自绘组件 (customPoint 与 Canvas)
  • customPoint: 如果CustomPoint 有子节点 ,为了避免子节点不必要的重绘并提高性能,通常情况会将子节点包裹在RepaintBoundary 组件中 、、、 CustomPaint({ Key key, this.painter, /// 背景画笔,会显示在子节点后面; this.foregroundPainter, /// 前景画笔 , 会显示在子节点前面; this.size = Size.zero, /// 当child为null时, 代表默认绘制区域大小; 如果有则,画布尺寸则为child尺寸,如果有child但是像指定画布特定大小,可以使用 sizeBox包裹 customPaint 实现; this.isComplex = false, ///是否复杂的绘制,如果是,Flutter会应用一些缓存策略来减少重复渲染的开销。 this.willChange = false, ///和isComplex配合使用,当启用缓存时,该属性代表在下一帧中绘制是否会改变。 Widget child, //子节点,可以为空 }) 、、、
  1. CustomPainter: 定义的一个虚拟函数 point ; void paint(Canvas canvas, Size size);
  • Canvas : 一个画布,各种绘制方法;包括 |API名称 | 功能 | | ---------- | ------ | | drawLine | 画线 | | drawPoint | 画点 | | drawPath | 画路径 | | drawImage | 画图像 | | drawRect | 画矩形 | | drawCircle | 画圆 | | drawOval | 画椭圆 | | drawArc | 画圆弧 |
  • Size: 当前绘制区域大小
  1. 画笔 Paint
    

、、、 var paint = Paint() //创建一个画笔并配置其属性 ..isAntiAlias = true //是否抗锯齿 ..style = PaintingStyle.fill //画笔样式:填充 stroke:线 ..color=Color(0x77cdb175);//画笔颜色 、、、