RenderEditable constructor Null safety
- {InlineSpan? text,
- required TextDirection textDirection,
- TextAlign textAlign = TextAlign.start,
- Color? cursorColor,
- Color? backgroundCursorColor,
- ValueNotifier<
bool> ? showCursor, - bool? hasFocus,
- required LayerLink startHandleLayerLink,
- required LayerLink endHandleLayerLink,
- int? maxLines = 1,
- int? minLines,
- bool expands = false,
- StrutStyle? strutStyle,
- Color? selectionColor,
- double textScaleFactor = 1.0,
- TextSelection? selection,
- required ViewportOffset offset,
- CaretChangedHandler? onCaretChanged,
- bool ignorePointer = false,
- bool readOnly = false,
- bool forceLine = true,
- TextHeightBehavior? textHeightBehavior,
- TextWidthBasis textWidthBasis = TextWidthBasis.parent,
- String obscuringCharacter = '•',
- bool obscureText = false,
- Locale? locale,
- double cursorWidth = 1.0,
- double? cursorHeight,
- Radius? cursorRadius,
- bool paintCursorAboveText = false,
- Offset cursorOffset = Offset.zero,
- double devicePixelRatio = 1.0,
- BoxHeightStyle selectionHeightStyle = ui.BoxHeightStyle.tight,
- BoxWidthStyle selectionWidthStyle = ui.BoxWidthStyle.tight,
- bool? enableInteractiveSelection,
- EdgeInsets floatingCursorAddedMargin = const EdgeInsets.fromLTRB(4, 4, 4, 5),
- TextRange? promptRectRange,
- Color? promptRectColor,
- Clip clipBehavior = Clip.hardEdge,
- required TextSelectionDelegate textSelectionDelegate,
- RenderEditablePainter? painter,
- RenderEditablePainter? foregroundPainter,
- List<
RenderBox> ? children}
Creates a render object that implements the visual aspects of a text field.
The textAlign
argument must not be null. It defaults to TextAlign.start.
The textDirection
argument must not be null.
If showCursor
is not specified, then it defaults to hiding the cursor.
The maxLines
property can be set to null to remove the restriction on
the number of lines. By default, it is 1, meaning this is a single-line
text field. If it is not null, it must be greater than zero.
The offset
is required and must not be null. You can use
ViewportOffset.zero if you have no need for scrolling.
Implementation
RenderEditable({
InlineSpan? text,
required TextDirection textDirection,
TextAlign textAlign = TextAlign.start,
Color? cursorColor,
Color? backgroundCursorColor,
ValueNotifier<bool>? showCursor,
bool? hasFocus,
required LayerLink startHandleLayerLink,
required LayerLink endHandleLayerLink,
int? maxLines = 1,
int? minLines,
bool expands = false,
StrutStyle? strutStyle,
Color? selectionColor,
double textScaleFactor = 1.0,
TextSelection? selection,
required ViewportOffset offset,
this.onCaretChanged,
this.ignorePointer = false,
bool readOnly = false,
bool forceLine = true,
TextHeightBehavior? textHeightBehavior,
TextWidthBasis textWidthBasis = TextWidthBasis.parent,
String obscuringCharacter = '•',
bool obscureText = false,
Locale? locale,
double cursorWidth = 1.0,
double? cursorHeight,
Radius? cursorRadius,
bool paintCursorAboveText = false,
Offset cursorOffset = Offset.zero,
double devicePixelRatio = 1.0,
ui.BoxHeightStyle selectionHeightStyle = ui.BoxHeightStyle.tight,
ui.BoxWidthStyle selectionWidthStyle = ui.BoxWidthStyle.tight,
bool? enableInteractiveSelection,
this.floatingCursorAddedMargin = const EdgeInsets.fromLTRB(4, 4, 4, 5),
TextRange? promptRectRange,
Color? promptRectColor,
Clip clipBehavior = Clip.hardEdge,
required this.textSelectionDelegate,
RenderEditablePainter? painter,
RenderEditablePainter? foregroundPainter,
List<RenderBox>? children,
}) : assert(textAlign != null),
assert(textDirection != null, 'RenderEditable created without a textDirection.'),
assert(maxLines == null || maxLines > 0),
assert(minLines == null || minLines > 0),
assert(startHandleLayerLink != null),
assert(endHandleLayerLink != null),
assert(
(maxLines == null) || (minLines == null) || (maxLines >= minLines),
"minLines can't be greater than maxLines",
),
assert(expands != null),
assert(
!expands || (maxLines == null && minLines == null),
'minLines and maxLines must be null when expands is true.',
),
assert(textScaleFactor != null),
assert(offset != null),
assert(ignorePointer != null),
assert(textWidthBasis != null),
assert(paintCursorAboveText != null),
assert(obscuringCharacter != null && obscuringCharacter.characters.length == 1),
assert(obscureText != null),
assert(textSelectionDelegate != null),
assert(cursorWidth != null && cursorWidth >= 0.0),
assert(cursorHeight == null || cursorHeight >= 0.0),
assert(readOnly != null),
assert(forceLine != null),
assert(devicePixelRatio != null),
assert(selectionHeightStyle != null),
assert(selectionWidthStyle != null),
assert(clipBehavior != null),
_textPainter = TextPainter(
text: text,
textAlign: textAlign,
textDirection: textDirection,
textScaleFactor: textScaleFactor,
locale: locale,
strutStyle: strutStyle,
textHeightBehavior: textHeightBehavior,
textWidthBasis: textWidthBasis,
),
_showCursor = showCursor ?? ValueNotifier<bool>(false),
_maxLines = maxLines,
_minLines = minLines,
_expands = expands,
_selection = selection,
_offset = offset,
_cursorWidth = cursorWidth,
_cursorHeight = cursorHeight,
_paintCursorOnTop = paintCursorAboveText,
_enableInteractiveSelection = enableInteractiveSelection,
_devicePixelRatio = devicePixelRatio,
_startHandleLayerLink = startHandleLayerLink,
_endHandleLayerLink = endHandleLayerLink,
_obscuringCharacter = obscuringCharacter,
_obscureText = obscureText,
_readOnly = readOnly,
_forceLine = forceLine,
_clipBehavior = clipBehavior,
_hasFocus = hasFocus ?? false {
assert(_showCursor != null);
assert(!_showCursor.value || cursorColor != null);
_selectionPainter.highlightColor = selectionColor;
_selectionPainter.highlightedRange = selection;
_selectionPainter.selectionHeightStyle = selectionHeightStyle;
_selectionPainter.selectionWidthStyle = selectionWidthStyle;
_autocorrectHighlightPainter.highlightColor = promptRectColor;
_autocorrectHighlightPainter.highlightedRange = promptRectRange;
_caretPainter.caretColor = cursorColor;
_caretPainter.cursorRadius = cursorRadius;
_caretPainter.cursorOffset = cursorOffset;
_caretPainter.backgroundCursorColor = backgroundCursorColor;
_updateForegroundPainter(foregroundPainter);
_updatePainter(painter);
addAll(children);
_extractPlaceholderSpans(text);
}