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
-
- Object
- ShapeBorder
- OutlinedBorder
- MaterialExpressiveBorder
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
thisborder and theotherborder.inherited -
copyWith(
{BorderSide? side, MaterialExpressiveShape? shape, bool? stretch}) → MaterialExpressiveBorder -
Returns a copy of this OutlinedBorder that draws its outline with the
specified
side, ifsideis 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
thisto 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