RenderEditable class
Displays some text in a scrollable container with a potentially blinking cursor and with gesture recognizers.
This is the renderer for an editable text field. It does not directly provide affordances for editing the text, but it does handle text selection and manipulation of the text cursor.
The text is displayed, scrolled by the given offset, aligned according to textAlign. The maxLines property controls whether the text displays on one line or many. The selection, if it is not collapsed, is painted in the selectionColor. If it is collapsed, then it represents the cursor position. The cursor is shown while showCursor is true. It is painted in the cursorColor.
If, when the render object paints, the caret is found to have changed location, onCaretChanged is called.
The user may interact with the render object by tapping or long-pressing. When the user does so, the selection is updated, and onSelectionChanged is called.
Keyboard handling, IME handling, scrolling, toggling the showCursor value to actually blink the cursor, and other features not mentioned above are the responsibility of higher layers and not handled by this object.
- Inheritance
- Object
- AbstractNode
- RenderObject
- RenderBox
- RenderEditable
Constructors
-
RenderEditable({TextSpan text, @required TextDirection textDirection, TextAlign textAlign: TextAlign.start, Color cursorColor, ValueNotifier<
bool> showCursor, bool hasFocus, int maxLines: 1, Color selectionColor, double textScaleFactor: 1.0, TextSelection selection, @required ViewportOffset offset, SelectionChangedHandler onSelectionChanged, CaretChangedHandler onCaretChanged, bool ignorePointer: false, bool obscureText: false, Locale locale, double cursorWidth: 1.0, Radius cursorRadius, bool enableInteractiveSelection: true, @required TextSelectionDelegate textSelectionDelegate }) - Creates a render object that implements the visual aspects of a text field. [...]
Properties
- cursorColor ↔ Color
-
The color to use when painting the cursor.
read / write
- cursorRadius ↔ Radius
-
How rounded the corners of the cursor should be.
read / write
- cursorWidth ↔ double
-
How thick the cursor will be.
read / write
- enableInteractiveSelection ↔ bool
-
If false, describeSemanticsConfiguration will not set the
configuration's cursor motion or set selection callbacks. [...]
read / write
- hasFocus ↔ bool
-
Whether the editable is currently focused.
read / write
- ignorePointer ↔ bool
-
If true handleEvent does nothing and it's assumed that this
renderer will be notified of input gestures via handleTapDown,
handleTap, handleDoubleTap, and handleLongPress. [...]
read / write
- locale ↔ Locale
-
Used by this renderer's internal TextPainter to select a locale-specific
font. [...]
read / write
- maxLines ↔ int
-
The maximum number of lines for the text to span, wrapping if necessary. [...]
read / write
- obscureText ↔ bool
-
Whether to hide the text being edited (e.g., for passwords).
read / write
- offset ↔ ViewportOffset
-
The offset at which the text should be painted. [...]
read / write
- onCaretChanged ↔ CaretChangedHandler
-
Called during the paint phase when the caret location changes.
read / write
- onSelectionChanged ↔ SelectionChangedHandler
-
Called when the selection changes.
read / write
- preferredLineHeight → double
-
An estimate of the height of a line in the text. See TextPainter.preferredLineHeight.
This does not required the layout to be updated.
read-only
- selection ↔ TextSelection
-
The region of text that is selected, if any.
read / write
- selectionColor ↔ Color
-
The color to use when painting the selection.
read / write
-
showCursor
↔ ValueNotifier<
bool> -
Whether to paint the cursor.
read / write
- text ↔ TextSpan
-
The text to display.
read / write
- textAlign ↔ TextAlign
-
How the text should be aligned horizontally. [...]
read / write
- textDirection ↔ TextDirection
-
The directionality of the text. [...]
read / write
- textScaleFactor ↔ double
-
The number of font pixels for each logical pixel. [...]
read / write
- textSelectionDelegate ↔ TextSelectionDelegate
-
The object that controls the text selection, used by this render object
for implementing cut, copy, and paste keyboard shortcuts. [...]
read / write
- alwaysNeedsCompositing → bool
-
Whether this render object always needs compositing. [...]
@protected, read-only, inherited
- attached → bool
-
Whether this node is in a tree whose root is attached to something. [...]
read-only, inherited
- constraints → BoxConstraints
-
The box constraints most recently received from the parent.
read-only, inherited
- debugCanParentUseSize → bool
-
Whether the parent render object is permitted to use this render object's
size. [...]
read-only, inherited
- debugCreator ↔ dynamic
-
The object responsible for creating this render object. [...]
read / write, inherited
- debugDoingThisLayout → bool
-
Whether performLayout for this render object is currently running. [...]
read-only, inherited
- debugDoingThisPaint → bool
-
Whether paint for this render object is currently running. [...]
read-only, inherited
- debugDoingThisResize → bool
-
Whether performResize for this render object is currently running. [...]
read-only, inherited
- debugLayer → OffsetLayer
-
In debug mode, the compositing layer that this render object uses to repaint. [...]
read-only, inherited
- debugNeedsLayout → bool
-
Whether this render object's layout information is dirty. [...]
read-only, inherited
- debugNeedsPaint → bool
-
Whether this render object's paint information is dirty. [...]
read-only, inherited
- debugSemantics → SemanticsNode
-
The semantics of this render object. [...]
read-only, inherited
- depth → int
-
The depth of this node in the tree. [...]
read-only, inherited
- hashCode → int
-
The hash code for this object. [...]
read-only, inherited
- hasSize → bool
-
Whether this render object has undergone layout and has a size.
read-only, inherited
- isRepaintBoundary → bool
-
Whether this render object repaints separately from its parent. [...]
read-only, inherited
- layer → OffsetLayer
-
The compositing layer that this render object uses to repaint. [...]
read-only, inherited
- needsCompositing → bool
-
Whether we or one of our descendants has a compositing layer. [...]
read-only, inherited
- owner → PipelineOwner
-
The owner for this node (null if unattached). [...]
read-only, inherited
- paintBounds → Rect
-
Returns a rectangle that contains all the pixels painted by this box. [...]
read-only, inherited
- parent → AbstractNode
-
The parent of this node in the tree.
read-only, inherited
- parentData ↔ ParentData
-
Data for use by the parent render object. [...]
read / write, inherited
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
- semanticBounds → Rect
-
The bounding box, in the local coordinate system, of this
object, for accessibility purposes.
read-only, inherited
- size ↔ Size
-
The size of this render box computed during layout. [...]
@protected, read / write, inherited
- sizedByParent → bool
-
Whether the constraints are the only input to the sizing algorithm (in
particular, child nodes have no impact). [...]
@protected, read-only, inherited
Methods
-
attach(
covariant PipelineOwner owner) → void -
Mark this node as attached to the given owner. [...]
override
-
computeDistanceToActualBaseline(
TextBaseline baseline) → double -
Returns the distance from the y-coordinate of the position of the box to
the y-coordinate of the first given baseline in the box's contents, if
any, or null otherwise. [...]
override
-
computeMaxIntrinsicHeight(
double width) → double -
Computes the value returned by getMaxIntrinsicHeight. Do not call this
function directly, instead, call getMaxIntrinsicHeight. [...]
override
-
computeMaxIntrinsicWidth(
double height) → double -
Computes the value returned by getMaxIntrinsicWidth. Do not call this
function directly, instead, call getMaxIntrinsicWidth. [...]
override
-
computeMinIntrinsicHeight(
double width) → double -
Computes the value returned by getMinIntrinsicHeight. Do not call this
function directly, instead, call getMinIntrinsicHeight. [...]
override
-
computeMinIntrinsicWidth(
double height) → double -
Computes the value returned by getMinIntrinsicWidth. Do not call this
function directly, instead, call getMinIntrinsicWidth. [...]
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children. [...]
override
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node. [...]
override
-
describeApproximatePaintClip(
covariant RenderObject child) → Rect -
Returns a rect in this object's coordinate system that describes
the approximate bounding box of the clip rect that would be
applied to the given child during the paint phase, if any. [...]
override
-
describeSemanticsConfiguration(
SemanticsConfiguration config) → void -
Report the semantics of this node, for example for accessibility purposes. [...]
override
-
detach(
) → void -
Mark this node as detached. [...]
override
-
getEndpointsForSelection(
TextSelection selection) → List< TextSelectionPoint> - Returns the local coordinates of the endpoints of the given selection. [...]
-
getLocalRectForCaret(
TextPosition caretPosition) → Rect - Returns the Rect in local coordinates for the caret at the given text position. [...]
-
getPositionForPoint(
Offset globalPosition) → TextPosition - Returns the position in the text for the given global coordinate. [...]
-
handleDoubleTap(
) → void - If ignorePointer is false (the default) then this method is called by the internal gesture recognizer's DoubleTapGestureRecognizer.onDoubleTap callback. [...]
-
handleEvent(
PointerEvent event, covariant BoxHitTestEntry entry) → void -
Override this method to handle pointer events that hit this render object. [...]
override
-
handleLongPress(
) → void -
If ignorePointer is false (the default) then this method is called by
the internal gesture recognizer's
LongPressRecognizer.onLongPress
callback. [...] -
handleTap(
) → void - If ignorePointer is false (the default) then this method is called by the internal gesture recognizer's TapGestureRecognizer.onTap callback. [...]
-
handleTapDown(
TapDownDetails details) → void - If ignorePointer is false (the default) then this method is called by the internal gesture recognizer's TapGestureRecognizer.onTapDown callback. [...]
-
hitTestSelf(
Offset position) → bool -
Override this method if this render object can be hit even if its
children were not hit. [...]
override
-
markNeedsTextLayout(
) → void -
Marks the render object as needing to be laid out again and have its text
metrics recomputed. [...]
@protected
-
paint(
PaintingContext context, Offset offset) → void -
Paint this render object into the given context at the given offset. [...]
override
-
performLayout(
) → void -
Do the work of computing the layout for this render object. [...]
override
-
selectPosition(
{SelectionChangedCause cause }) → void - Move selection to the location of the last tap down.
-
selectWord(
{SelectionChangedCause cause }) → void - Select a word around the location of the last tap down.
-
selectWordEdge(
{SelectionChangedCause cause }) → void - Move the selection to the beginning or end of a word.
-
adoptChild(
covariant RenderObject child) → void -
Called by subclasses when they decide a render object is a child. [...]
inherited
-
applyPaintTransform(
covariant RenderObject child, Matrix4 transform) → void -
Multiply the transform from the parent's coordinate system to this box's
coordinate system into the given transform. [...]
inherited
-
assembleSemanticsNode(
SemanticsNode node, SemanticsConfiguration config, Iterable< SemanticsNode> children) → void -
Assemble the SemanticsNode for this RenderObject. [...]
inherited
-
clearSemantics(
) → void -
Removes all semantics from this render object and its descendants. [...]
@mustCallSuper, inherited
-
debugAdoptSize(
Size value) → Size -
Claims ownership of the given Size. [...]
inherited
-
debugAssertDoesMeetConstraints(
) → void -
Verify that the object's constraints are being met. Override
this function in a subclass to verify that your state matches
the constraints object. This function is only called in checked
mode and only when needsLayout is false. If the constraints are
not met, it should assert or throw an exception.
inherited
-
debugHandleEvent(
PointerEvent event, HitTestEntry entry) → bool -
Implements the debugPaintPointersEnabled debugging feature. [...]
inherited
-
debugPaint(
PaintingContext context, Offset offset) → void -
Override this method to paint debugging information.
inherited
-
debugPaintBaselines(
PaintingContext context, Offset offset) → void -
In debug mode, paints a line for each baseline. [...]
@protected, inherited
-
debugPaintPointers(
PaintingContext context, Offset offset) → void -
In debug mode, paints a rectangle if this render box has counted more
pointer downs than pointer up events. [...]
@protected, inherited
-
debugPaintSize(
PaintingContext context, Offset offset) → void -
In debug mode, paints a border around this render box. [...]
@protected, inherited
-
debugRegisterRepaintBoundaryPaint(
{bool includedParent: true, bool includedChild: false }) → void -
Called, in checked mode, if isRepaintBoundary is true, when either the
this render object or its parent attempt to paint. [...]
inherited
-
debugResetSize(
) → void -
If a subclass has a "size" (the state controlled by
parentUsesSize
, whatever it is in the subclass, e.g. the actualsize
property of RenderBox), and the subclass verifies that in checked mode this "size" property isn't used when debugCanParentUseSize isn't set, then that subclass should override debugResetSize to reapply the current values of debugCanParentUseSize to that state.inherited -
describeSemanticsClip(
covariant RenderObject child) → Rect -
Returns a rect in this object's coordinate system that describes
which SemanticsNodes produced by the
child
should be included in the semantics tree. SemanticsNodes from thechild
that are positioned outside of this rect will be dropped. Child SemanticsNodes that are positioned inside this rect, but outside of describeApproximatePaintClip will be included in the tree marked as hidden. Child SemanticsNodes that are inside of both rect will be included in the tree as regular nodes. [...]inherited -
dropChild(
covariant RenderObject child) → void -
Called by subclasses when they decide a render object is no longer a child. [...]
inherited
-
getDistanceToActualBaseline(
TextBaseline baseline) → double -
Calls computeDistanceToActualBaseline and caches the result. [...]
@mustCallSuper, @protected, inherited
-
getDistanceToBaseline(
TextBaseline baseline, { bool onlyReal: false }) → double -
Returns the distance from the y-coordinate of the position of the box to
the y-coordinate of the first given baseline in the box's contents. [...]
inherited
-
getMaxIntrinsicHeight(
double width) → double -
Returns the smallest height beyond which increasing the height never
decreases the preferred width. The preferred width is the value that
would be returned by getMinIntrinsicWidth for that height. [...]
@mustCallSuper, inherited
-
getMaxIntrinsicWidth(
double height) → double -
Returns the smallest width beyond which increasing the width never
decreases the preferred height. The preferred height is the value that
would be returned by getMinIntrinsicHeight for that width. [...]
@mustCallSuper, inherited
-
getMinIntrinsicHeight(
double width) → double -
Returns the minimum height that this box could be without failing to
correctly paint its contents within itself, without clipping. [...]
@mustCallSuper, inherited
-
getMinIntrinsicWidth(
double height) → double -
Returns the minimum width that this box could be without failing to
correctly paint its contents within itself, without clipping. [...]
@mustCallSuper, inherited
-
getTransformTo(
RenderObject ancestor) → Matrix4 -
Applies the paint transform up the tree to
ancestor
. [...]inherited -
globalToLocal(
Offset point, { RenderObject ancestor }) → Offset -
Convert the given point from the global coordinate system in logical pixels
to the local coordinate system for this box. [...]
inherited
-
hitTest(
HitTestResult result, { Offset position }) → bool -
Determines the set of render objects located at the given position. [...]
inherited
-
hitTestChildren(
HitTestResult result, { Offset position }) → bool -
Override this method to check whether any children are located at the
given position. [...]
@protected, inherited
-
invokeLayoutCallback<
T extends Constraints>( LayoutCallback< T> callback) → void -
Allows mutations to be made to this object's child list (and any
descendants) as well as to any other dirty nodes in the render tree owned
by the same PipelineOwner as this object. The
callback
argument is invoked synchronously, and the mutations are allowed only during that callback's execution. [...]@protected, inherited -
layout(
Constraints constraints, { bool parentUsesSize: false }) → void -
Compute the layout for this render object. [...]
inherited
-
localToGlobal(
Offset point, { RenderObject ancestor }) → Offset -
Convert the given point from the local coordinate system for this box to
the global coordinate system in logical pixels. [...]
inherited
-
markNeedsCompositingBitsUpdate(
) → void -
Mark the compositing state for this render object as dirty. [...]
inherited
-
markNeedsLayout(
) → void -
Mark this render object's layout information as dirty, and either register
this object with its PipelineOwner, or defer to the parent, depending on
whether this object is a relayout boundary or not respectively. [...]
inherited
-
markNeedsLayoutForSizedByParentChange(
) → void -
Mark this render object's layout information as dirty (like
markNeedsLayout), and additionally also handle any necessary work to
handle the case where sizedByParent has changed value. [...]
inherited
-
markNeedsPaint(
) → void -
Mark this render object as having changed its visual appearance. [...]
inherited
-
markNeedsSemanticsUpdate(
) → void -
Mark this node as needing an update to its semantics description. [...]
inherited
-
markParentNeedsLayout(
) → void -
Mark this render object's layout information as dirty, and then defer to
the parent. [...]
@protected, inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed. [...]
inherited
-
performResize(
) → void -
Updates the render objects size using only the constraints. [...]
inherited
-
reassemble(
) → void -
Cause the entire subtree rooted at the given RenderObject to be marked
dirty for layout, paint, etc, so that the effects of a hot reload can be
seen, or so that the effect of changing a global debug flag (such as
debugPaintSizeEnabled) can be applied. [...]
inherited
-
redepthChild(
AbstractNode child) → void -
Adjust the depth of the given
child
to be greater than this node's own depth. [...]@protected, inherited -
redepthChildren(
) → void -
Adjust the depth of this node's children, if any. [...]
inherited
-
replaceRootLayer(
OffsetLayer rootLayer) → void -
Replace the layer. This is only valid for the root of a render
object subtree (whatever object scheduleInitialPaint was
called on). [...]
inherited
-
rotate(
{int oldAngle, int newAngle, Duration time }) → void -
Rotate this render object (not yet implemented).
inherited
-
scheduleInitialLayout(
) → void -
Bootstrap the rendering pipeline by scheduling the very first layout. [...]
inherited
-
scheduleInitialPaint(
ContainerLayer rootLayer) → void -
Bootstrap the rendering pipeline by scheduling the very first paint. [...]
inherited
-
scheduleInitialSemantics(
) → void -
Bootstrap the semantics reporting mechanism by marking this node
as needing a semantics update. [...]
inherited
-
sendSemanticsEvent(
SemanticsEvent semanticsEvent) → void -
Sends a SemanticsEvent associated with this render object's SemanticsNode. [...]
inherited
-
setupParentData(
covariant RenderObject child) → void -
Override to setup parent data correctly for your children. [...]
inherited
-
showOnScreen(
{RenderObject descendant, Rect rect, Duration duration: Duration.zero, Curve curve: Curves.ease }) → void -
Attempt to make (a portion of) this or a descendant RenderObject visible
on screen. [...]
inherited
-
toDiagnosticsNode(
{String name, DiagnosticsTreeStyle style }) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by toStringDeep. [...]
inherited
-
toString(
{DiagnosticLevel minLevel }) → String -
Returns a string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne: '', String prefixOtherLines: '', DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String -
Returns a description of the tree rooted at this node.
If the prefix argument is provided, then every line in the output
will be prefixed by that string.
inherited
-
toStringShallow(
{String joiner: '; ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String -
Returns a one-line detailed description of the render object.
This description is often somewhat long. [...]
inherited
-
toStringShort(
) → String -
Returns a human understandable name.
inherited
-
visitChildren(
RenderObjectVisitor visitor) → void -
Calls visitor for each immediate child of this render object. [...]
inherited
-
visitChildrenForSemantics(
RenderObjectVisitor visitor) → void -
Called when collecting the semantics of this node. [...]
inherited
Operators
-
operator ==(
dynamic other) → bool -
The equality operator. [...]
inherited
Constants
- obscuringCharacter → const String
-
Character used to obscure text if obscureText is true.
'•'