flutter自定义视图

CustomPaint

CustomPaint(
            // painter: MyPainter(),
            foregroundPainter: MyPainter(),
            child: Text('hello customPaint'),
          )

class MyPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    Paint paint = Paint()
    ..isAntiAlias = true
    ..style = PaintingStyle.stroke
    ..strokeWidth = 5
    ..color = Colors.green;
    canvas.drawRect(Offset.zero & Size(100, 100), paint);
    canvas.drawArc(Offset(10, 10) & Size(40, 40), 3, 3, true, paint);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    // TODO: implement shouldRepaint
    return false;
  }
}

RenderBox

建议使用CustomPaint,CustomPaint内部其实就是对RenderBox做了封装

class CircleView extends SingleChildRenderObjectWidget{
  @override
  RenderObject createRenderObject(BuildContext context) {
    return RenderCircle();
  }
}

class RenderCircle extends RenderBox{
  Paint _paint;
  Path _path;
  
  RenderCircle(){
    _paint = Paint();
    _paint.isAntiAlias = true;
    _paint.style = PaintingStyle.fill;
    _path = Path();
  }

  @override
  void performLayout() {

  }

  @override
  void paint(PaintingContext context, Offset offset) {
    var canvas = context.canvas;
    //通过canvas绘制
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,764评论 1 32
  • 本章的开头先阐述了识别知识源头的重要性。把知识分为四手,看了我才明白,原来之前一直读的一些公众号(大牛除外)的文章...
    Tina的人生笔记阅读 418评论 7 4
  • 2018年6月22日 姓名 :曹静杰 企业名称 : 辽宁辽阳丛迪服装 组别 388期 反省1组 【日精进打卡第41...
    eddd166e28ad阅读 127评论 0 0
  • 过年了,大人们都可以跟朋友聚会,小孩子们可以穿新衣服,还可以放鞭炮。 大年三十姐姐带我回姨妈家过年...
    Owen5588阅读 391评论 0 0
  • 遇见你以后,风雨从此不回头 静默流年萦转哪休 爱坦然,恨依旧 若相期,太长久 借我一生去守候 离别你以后,岁月匆匆...
    茂岭山下阅读 366评论 3 5

友情链接更多精彩内容