RectanglePainter class

A CustomPainter that creates an animated, hand-drawn rectangle effect around text.

This effect simulates a person drawing a rectangle around text in a natural, sketchy manner. The rectangle gradually appears, starting from the top-left and moving down, right, up, and left.

Features:

  • Realistic Hand-Drawn Look: Uses randomized wavy offsets for an organic feel.
  • Animated Effect: The rectangle draws progressively as the animation progresses.
  • Works with Any Text: Automatically adapts to text size and width.

Usage:

This painter is used internally by AnimatedRectangleText to apply the effect.

Example Usage:

CustomPaint(
  painter: RectanglePainter(
    text: "Flutter",
    textStyle: TextStyle(fontSize: 24, color: Colors.black),
    rectangleColor: Colors.orange,
    animationValue: 1.0,  // 100% completed rectangle
    precomputedOffsets: List.generate(1000, (index) => Random().nextDouble()),
  ),
  child: Text("Flutter", style: TextStyle(fontSize: 24, color: Colors.black)),
)
Inheritance

Constructors

RectanglePainter({required String text, required TextStyle textStyle, required Color rectangleColor, required double animationValue, required List<double> precomputedOffsets})
Creates a RectanglePainter to draw an animated sketchy rectangle around text.

Properties

animationValue double
Controls the animation progress (0 to 1).
final
hashCode int
The hash code for this object.
no setterinherited
precomputedOffsets List<double>
A list of random offsets to create an organic, hand-drawn effect.
final
rectangleColor Color
The color of the animated rectangle.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
semanticsBuilder SemanticsBuilderCallback?
Returns a function that builds semantic information for the picture drawn by this painter.
no setterinherited
text String
The text to be enclosed in a rectangle.
final
textStyle TextStyle
The text style used for measurement.
final

Methods

addListener(VoidCallback listener) → void
Register a closure to be notified when it is time to repaint.
inherited
hitTest(Offset position) bool?
Called whenever a hit test is being performed on an object that is using this custom paint delegate.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
paint(Canvas canvas, Size size) → void
Called whenever the object needs to paint. The given Canvas has its coordinate space configured such that the origin is at the top left of the box. The area of the box is the size of the size argument.
override
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that the object notifies when it is time to repaint.
inherited
shouldRebuildSemantics(covariant CustomPainter oldDelegate) bool
Called whenever a new instance of the custom painter delegate class is provided to the RenderCustomPaint object, or any time that a new CustomPaint object is created with a new instance of the custom painter delegate class (which amounts to the same thing, because the latter is implemented in terms of the former).
inherited
shouldRepaint(covariant CustomPainter oldDelegate) bool
Called whenever a new instance of the custom painter delegate class is provided to the RenderCustomPaint object, or any time that a new CustomPaint object is created with a new instance of the custom painter delegate class (which amounts to the same thing, because the latter is implemented in terms of the former).
override
toString() String
A string representation of this object.
inherited

Operators

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