MaterialExpressiveBorder class

An AndroidX-derived Material 3 Expressive silhouette usable with Material, ShapeDecoration, InkWell.customBorder, and MonetClip.shape.

These are dimensionless motifs, not configurable rounded rectangles: their rounding scales with the available size, not Monet's corner-radius token. By default the normalized unit square is centered and uniformly scaled to the shortest side of the bounds. stretch instead scales each axis to fill the bounds (the same mapping as Compose's RoundedPolygon.toShape).

Like Flutter's StarBorder, stroke placement and the inner path use adjusted bounding rectangles; this is not a geometric offset of concave curves. Supply explicit content padding for lobes/notches. dimensions only accounts for the stroke. Shape changes during interpolation switch at the midpoint; this adapter does not implement AndroidX Morph.

Inheritance

Constructors

MaterialExpressiveBorder({required MaterialExpressiveShape shape, bool stretch = false, BorderSide side = BorderSide.none})
const

Properties

dimensions → EdgeInsetsGeometry
The widths of the sides of this border represented as an EdgeInsets.
no setteroverride
hashCode → int
The hash code for this object.
no setteroverride
preferPaintInterior → bool
Reports whether paintInterior is implemented.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
shape → MaterialExpressiveShape
final
side → BorderSide
The border outline's color and weight.
finalinherited
stretch → bool
final

Methods

add(ShapeBorder other, {bool reversed = false}) → ShapeBorder?
Attempts to create a new object that represents the amalgamation of this border and the other border.
inherited
copyWith({BorderSide? side, MaterialExpressiveShape? shape, bool? stretch}) → MaterialExpressiveBorder
Returns a copy of this OutlinedBorder that draws its outline with the specified side, if side is non-null.
override
getInnerPath(Rect rect, {TextDirection? textDirection}) → Path
Create a Path that describes the inner edge of the border.
override
getOuterPath(Rect rect, {TextDirection? textDirection}) → Path
Create a Path that describes the outer edge of the border.
override
lerpFrom(ShapeBorder? a, double t) → ShapeBorder?
Linearly interpolates from another ShapeBorder (possibly of another class) to this.
override
lerpTo(ShapeBorder? b, double t) → ShapeBorder?
Linearly interpolates from this to another ShapeBorder (possibly of another class).
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
paint(Canvas canvas, Rect rect, {TextDirection? textDirection}) → void
Paints the border within the given Rect on the given Canvas.
override
paintInterior(Canvas canvas, Rect rect, Paint paint, {TextDirection? textDirection}) → void
Paint a canvas with the appropriate shape.
inherited
scale(double t) → MaterialExpressiveBorder
Creates a copy of this border, scaled by the factor t.
override
toString() → String
A string representation of this object.
inherited

Operators

operator +(ShapeBorder other) → ShapeBorder
Creates a new border consisting of the two borders on either side of the operator.
inherited
operator ==(Object other) → bool
The equality operator.
override