Flutter Stuff

How to Make Dotted/Dash Border on Container in Flutter App

Introduction:

In mobile app development, borders play a crucial role in enhancing the visual appeal of an application. Flutter, being a popular cross-platform framework, offers various ways to customize the appearance of widgets. One such customization is adding a dotted or dash border to a container. In this blog post, we will explore how to make a dotted/dash border on a container in a Flutter app.

Understanding the Border Widget

The `Container` widget in Flutter provides a `decoration` property that can be used to add borders, backgrounds, and other visual effects. However, the `Border` class in Flutter does not have a built-in property to create a dotted or dash border. To achieve this, we need to use the `Border` class’s `side` property and create a custom border.

Creating a Dotted/Dash Border

To create a dotted or dash border, we will use the `CustomPainter` class. This class allows us to draw custom shapes and paths on a canvas. We will create a custom painter that draws a dotted or dash line along the border of the container.

“`dart

import ‘package:flutter/material.dart’;

class DottedBorder extends StatelessWidget {

@override

Widget build(BuildContext context) {

return Container(

decoration: BoxDecoration(

border: Border.all(

width: 2,

style: BorderStyle.none,

),

borderRadius: BorderRadius.circular(10),

),

child: CustomPaint(

painter: DottedBorderPainter(),

child: Container(

width: 200,

height: 200,

),

),

);

}

}

class DottedBorderPainter extends CustomPainter {

@override

void paint(Canvas canvas, Size size) {

double strokeWidth = 2;

double dashWidth = 5;

double dashSpace = 3;

double offsetX = 0;

final paint = Paint()

..color = Colors.black

..style = PaintingStyle.stroke

..strokeWidth = strokeWidth;

for (int i = 0; i < 4; i++) {

switch (i) {

case 0:

// top

for (double x = 0; x < size.width; x += dashWidth + dashSpace) {

canvas.drawLine(

Offset(x + offsetX, 0),

Offset(x + offsetX + dashWidth, 0),

paint,

);

}

break;

case 1:

// right

for (double y = 0; y < size.height; y += dashWidth + dashSpace) {

canvas.drawLine(

Offset(size.width, y + offsetX),

Offset(size.width, y + offsetX + dashWidth),

paint,

);

}

break;

case 2:

// bottom

for (double x = 0; x < size.width; x += dashWidth + dashSpace) {

canvas.drawLine(

Offset(x + offsetX, size.height),

Offset(x + offsetX + dashWidth, size.height),

paint,

);

}

break;

case 3:

// left

for (double y = 0; y < size.height; y += dashWidth + dashSpace) {

canvas.drawLine(

Offset(0, y + offsetX),

Offset(0, y + offsetX + dashWidth),

paint,

);

}

break;

}

}

}

@override

bool shouldRepaint(covariant CustomPainter oldDelegate) => false;

}

“`

Customizing the Border

The `DottedBorderPainter` class provides several properties that can be customized to change the appearance of the border. The `dashWidth` and `dashSpace` properties control the length and spacing of the dashes, respectively. The `strokeWidth` property controls the thickness of the border.

Conclusion

In this blog post, we learned how to create a dotted or dash border on a container in a Flutter app. By using the `CustomPainter` class and creating a custom border painter, we can achieve this customization. We also explored how to customize the border by changing the length and spacing of the dashes, as well as the thickness of the border.

FAQs:

1. Q: How do I change the color of the dotted border?

A: You can change the color of the dotted border by modifying the `color` property of the `Paint` object in the `DottedBorderPainter` class.

2. Q: Can I use the dotted border with other widgets?

A: Yes, you can use the dotted border with other widgets, such as `Text`, `Image`, or `Button`.

3. Q: How do I make the dotted border more prominent?

A: You can make the dotted border more prominent by increasing the `strokeWidth` property or by decreasing the `dashSpace` property.

4. Q: Can I use the dotted border with a rounded corner?

A: Yes, you can use the dotted border with a rounded corner by setting the `borderRadius` property of the `Container` widget.

5. Q: Is the dotted border compatible with all Flutter versions?

A: The dotted border should be compatible with most Flutter versions, but it’s always a good idea to check the documentation for any specific version requirements.

Leave a Comment

Scroll to Top