CustomPaint class
A widget that provides a canvas on which to draw during the paint phase.
When asked to paint,CustomPaint first asks itspainter to paint on thecurrent canvas, then it paints its child, and then, after painting itschild, it asks itsforegroundPainter to paint. The coordinate system of thecanvas matches the coordinate system of theCustomPaint object. Thepainters are expected to paint within a rectangle starting at the origin andencompassing a region of the given size. (If the painters paint outsidethose bounds, there might be insufficient memory allocated to rasterize thepainting commands and the resulting behavior is undefined.) To enforcepainting within those bounds, consider wrapping thisCustomPaint with aClipRect widget.
Painters are implemented by subclassingCustomPainter.
Because custom paint calls its painters during paint, you cannot callsetState ormarkNeedsLayout during the callback (the layout for thisframe has already happened).
Custom painters normally size themselves to theirchild. If they do nothave a child, they attempt to size themselves to the specifiedsize, whichdefaults toSize.zero. The parentmay enforce constraints on thissize.
TheisComplex andwillChange properties are hints to the compositor'sraster cache.
CustomPaint( painter: Sky(), child: const Center( child: Text( 'Once upon a time...', style: TextStyle( fontSize: 40.0, fontWeight: FontWeight.w900, color: Color(0xFFFFFFFF), ), ), ),)See also:
- CustomPainter, the class to extend when creating custom painters.
- Canvas, the class that a custom painter uses to paint.
- Inheritance
Constructors
- CustomPaint({Key?key,CustomPainter?painter,CustomPainter?foregroundPainter,Sizesize =Size.zero,boolisComplex =false,boolwillChange =false,Widget?child})
- Creates a widget that delegates its painting.const
Properties
- child→Widget?
- The widget below this widget in the tree.finalinherited
- foregroundPainter→CustomPainter?
- The painter that paints after the children.final
- hashCode→int
- The hash code for this object.no setterinherited
- isComplex→bool
- Whether the painting is complex enough to benefit from caching.final
- key→Key?
- Controls how one widget replaces another widget in the tree.finalinherited
- painter→CustomPainter?
- The painter that paints before the children.final
- runtimeType→Type
- A representation of the runtime type of the object.no setterinherited
- size→Size
- The size that thisCustomPaint should aim for, given the layoutconstraints, if there is no child.final
- willChange→bool
- Whether the raster cache should be told that this painting is likelyto change in the next frame.final
Methods
- createElement(
)→SingleChildRenderObjectElement - RenderObjectWidgets always inflate to aRenderObjectElement subclass.inherited
- createRenderObject(
BuildContextcontext)→RenderCustomPaint - Creates an instance of theRenderObject class that thisRenderObjectWidget represents, using the configuration described by thisRenderObjectWidget.override
- debugDescribeChildren(
)→List< DiagnosticsNode> - Returns a list ofDiagnosticsNode objects describing this node'schildren.inherited
- debugFillProperties(
DiagnosticPropertiesBuilderproperties)→ void - Add additional properties associated with the node.inherited
- didUnmountRenderObject(
covariantRenderCustomPaintrenderObject)→ void - This method is called when a RenderObject that was previouslyassociated with this widget is removed from the render tree.The providedRenderObject will be of the same type as the one created bythis widget'screateRenderObject method.override
- noSuchMethod(
Invocationinvocation)→ dynamic - Invoked when a nonexistent method or property is accessed.inherited
- toDiagnosticsNode(
{String?name,DiagnosticsTreeStyle?style})→DiagnosticsNode - Returns a debug representation of the object that is used by debuggingtools and byDiagnosticsNode.toStringDeep.inherited
- toString(
{DiagnosticLevelminLevel =DiagnosticLevel.info})→String - A string representation of this object.inherited
- toStringDeep(
{StringprefixLineOne ='',String?prefixOtherLines,DiagnosticLevelminLevel =DiagnosticLevel.debug,intwrapWidth =65})→String - Returns a string representation of this node and its descendants.inherited
- toStringShallow(
{Stringjoiner =', ',DiagnosticLevelminLevel =DiagnosticLevel.debug})→String - Returns a one-line detailed description of the object.inherited
- toStringShort(
)→String - A short, textual description of this widget.inherited
- updateRenderObject(
BuildContextcontext,covariantRenderCustomPaintrenderObject)→ void - Copies the configuration described by thisRenderObjectWidget to thegivenRenderObject, which will be of the same type as returned by thisobject'screateRenderObject.override
Operators
- operator ==(
Objectother)→bool - The equality operator.inherited