flutter 虚线自定义【组件】

class DashedBorderPainter extends CustomPainter {
  final double borderWidth;
  final Color borderColor;
  final double dashWidth;
  final double dashSpace;

  DashedBorderPainter({
    required this.borderWidth,
    required this.borderColor,
    required this.dashWidth,
    required this.dashSpace,
  });

  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = borderColor
      ..style = PaintingStyle.stroke
      ..strokeWidth = borderWidth;

    final dashPath = Path();
    double x = 0.0;
    while (x < size.width) {
      dashPath.moveTo(x, 0);
      dashPath.lineTo(x + dashWidth, 0);
      x += dashWidth + dashSpace;
    }

    double y = 0.0;
    while (y < size.height) {
      dashPath.moveTo(0, y);
      dashPath.lineTo(0, y + dashWidth);
      y += dashWidth + dashSpace;
    }

    y = size.height;
    while (y > 0) {
      dashPath.moveTo(size.width, y);
      dashPath.lineTo(size.width, y - dashWidth);
      y -= dashWidth + dashSpace;
    }

    x = size.width;
    while (x > 0) {
      dashPath.moveTo(x, size.height);
      dashPath.lineTo(x - dashWidth, size.height);
      x -= dashWidth + dashSpace;
    }

    canvas.drawPath(dashPath, paint);
  }

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

用法:

DashedBorderContainer(
                      borderWidth: 0,
                      borderColor: Color(0xFFDDDDDD),
                      dashWidth: 5.0,
                      dashSpace: 3.0,
                      child: Container(
                        width: 0,
                        height: 44,
                        color: Colors.white,
                      ),
                    ),

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值