flutter如何实现点状边框效果

在Flutter中想要实现点状边框效果,但尝试了Border.symmetricDashedBorder插件都没成功。请问有没有内置方法或推荐的方式可以实现类似CSS中border-style: dotted的效果?最好能自定义点的间距和大小,或者有轻量级的三方库方案?

2 回复

使用CustomPaintContainerdecoration属性,结合BoxDecorationbordershape设置。
也可用Path绘制虚线边框,或使用第三方包如dotted_border
示例代码:

Container(
  decoration: BoxDecoration(
    border: Border.all(style: BorderStyle.solid),
    shape: BoxShape.circle,
  ),
)

更多关于flutter如何实现点状边框效果的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现点状边框效果可以通过以下两种方式:

方法一:使用CustomPaint自定义绘制

class DottedBorder extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.black
      ..strokeWidth = 2
      ..strokeCap = StrokeCap.round;

    // 水平方向的点
    for (double i = 0; i < size.width; i += 10) {
      canvas.drawCircle(Offset(i, 0), 1, paint); // 上边框
      canvas.drawCircle(Offset(i, size.height), 1, paint); // 下边框
    }

    // 垂直方向的点
    for (double i = 0; i < size.height; i += 10) {
      canvas.drawCircle(Offset(0, i), 1, paint); // 左边框
      canvas.drawCircle(Offset(size.width, i), 1, paint); // 右边框
    }
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}

// 使用方式
Container(
  width: 200,
  height: 100,
  child: CustomPaint(
    painter: DottedBorder(),
    child: Center(child: Text('点状边框')),
  ),
)

方法二:使用dotted_border第三方包(推荐)

首先在pubspec.yaml中添加依赖:

dependencies:
  dotted_border: ^2.0.0+2

然后使用:

import 'package:dotted_border/dotted_border.dart';

DottedBorder(
  color: Colors.black,
  strokeWidth: 2,
  dashPattern: [5, 5], // 5像素实线,5像素间隔
  child: Container(
    width: 200,
    height: 100,
    child: Center(child: Text('点状边框')),
  ),
)

推荐使用第二种方法,因为它更简单且功能更完善,支持圆角、不同样式的虚线等效果。

回到顶部