BorderSide class

A side of a border of a box.

A Border consists of four BorderSide objects:, Border.left, Border.right, and Border.bottom.

Setting BorderSide.width to 0.0 will result in hairline rendering; see BorderSide.width for a more involved explanation.

This sample shows how BorderSide objects can be used in a Container, via a BoxDecoration and a Border, to decorate some Text. In this example, the text has a thick bar above it that is light blue, and a thick bar below it that is a darker shade of blue.
  padding: const EdgeInsets.all(8.0),
  decoration: BoxDecoration(
    border: Border(
      top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),
      bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),
  child: const Text('Flutter in the sky', textAlign:,

See also:

Mixed in types


BorderSide({Color color = const Color(0xFF000000), double width = 1.0, BorderStyle style = BorderStyle.solid, double strokeAlign = strokeAlignInside})
Creates the side of a border.


color Color
The color of this side of the border.
hashCode int
The hash code for this object.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
strokeAlign double
The relative position of the stroke on a BorderSide in an OutlinedBorder or Border.
strokeInset double
Get the amount of the stroke width that lies inside of the BorderSide.
no setter
strokeOffset double
The offset of the stroke, taking into account the stroke alignment.
no setter
strokeOutset double
Get the amount of the stroke width that lies outside of the BorderSide.
no setter
style BorderStyle
The style of this side of the border.
width double
The width of this side of the border, in logical pixels.


copyWith({Color? color, double? width, BorderStyle? style, double? strokeAlign}) BorderSide
Creates a copy of this border but with the given fields replaced with the new values.
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
scale(double t) BorderSide
Creates a copy of this border side description but with the width scaled by the factor t.
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
toPaint() Paint
Create a Paint object that, if used to stroke a line, will draw the line in this border's style.
toString({DiagnosticLevel minLevel =}) String
A string representation of this object.
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode.


operator ==(Object other) bool
The equality operator.

Static Methods

canMerge(BorderSide a, BorderSide b) bool
Whether the two given BorderSides can be merged using BorderSide.merge.
lerp(BorderSide a, BorderSide b, double t) BorderSide
Linearly interpolate between two border sides.
merge(BorderSide a, BorderSide b) BorderSide
Creates a BorderSide that represents the addition of the two given BorderSides.


none → const BorderSide
A hairline black border that is not rendered.
strokeAlignCenter → const double
The border is drawn on the center of the border path, with half of the BorderSide.width on the inside, and the other half on the outside of the path.
strokeAlignInside → const double
The border is drawn fully inside of the border path.
strokeAlignOutside → const double
The border is drawn on the outside of the border path.