TextArea class

A multi-line text input widget with resizable dimensions and comprehensive styling.

TextArea provides an enhanced text editing experience with support for multi-line input, dynamic resizing capabilities, and extensive customization options. It supports both expandable height and width modes, allowing users to adjust the text area size by dragging resize handles.

Key features:

  • Multi-line text editing with optional height/width expansion
  • Configurable minimum and maximum dimensions
  • Support for leading and trailing widgets
  • Comprehensive text formatting and input validation
  • Integration with Flutter's text editing ecosystem
  • Customizable appearance through theming

The widget can operate in several resize modes:

Example:

TextArea(
  placeholder: Text('Enter your message...'),
  expandableHeight: true,
  minHeight: 100,
  maxHeight: 300,
  onChanged: (text) => print('Text: $text'),
);
Inheritance
Available extensions

Constructors

TextArea.new({Key? key, bool expandableHeight = false, bool expandableWidth = false, double initialHeight = 100, double initialWidth = double.infinity, ValueChanged<double>? onHeightChanged, ValueChanged<double>? onWidthChanged, TextEditingController? controller, bool? filled, Widget? placeholder, Border? border, Widget? leading, Widget? trailing, EdgeInsetsGeometry? padding, ValueChanged<String>? onSubmitted, VoidCallback? onEditingComplete, FocusNode? focusNode, VoidCallback? onTap, bool enabled = true, bool readOnly = false, bool obscureText = false, String obscuringCharacter = '•', String? initialValue, int? maxLength, MaxLengthEnforcement? maxLengthEnforcement, BorderRadiusGeometry? borderRadius, TextAlign textAlign = TextAlign.start, double minWidth = 100, double minHeight = 100, double maxWidth = double.infinity, double maxHeight = double.infinity, TextAlignVertical? textAlignVertical = TextAlignVertical.top, UndoHistoryController? undoController, ValueChanged<String>? onChanged, Iterable<String>? autofillHints, void onTapOutside(PointerDownEvent event)?, List<TextInputFormatter>? inputFormatters, TextStyle? style, EditableTextContextMenuBuilder? contextMenuBuilder, TextInputType? keyboardType, TextInputAction? textInputAction, Clip clipBehavior = Clip.hardEdge, bool autofocus = false})
Creates a TextArea with comprehensive configuration options.
const

Properties

asBuilder NeverWidgetBuilder

Available on Widget, provided by the WidgetExtension extension

no setter
asSliver Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
autofillHints Iterable<String>?
Hints for autofill services.
final
autofocus bool
Whether the text area should automatically receive focus.
final
base TextModifier

Available on Widget, provided by the TextExtension extension

no setter
black TextModifier

Available on Widget, provided by the TextExtension extension

no setter
blockQuote TextModifier

Available on Widget, provided by the TextExtension extension

no setter
blurIn Widget

Available on Widget, provided by the XWidgetEffect extension

no setter
bold TextModifier

Available on Widget, provided by the TextExtension extension

no setter
border Border?
Custom border decoration for the text area.
final
borderRadius BorderRadiusGeometry?
Border radius for rounded corners.
final
centered Widget

Available on Widget, provided by the XWidget extension

no setter
clipBehavior Clip
How to clip the text area content.
final
contextMenuBuilder EditableTextContextMenuBuilder?
Builder for custom context menus.
final
controller TextEditingController?
Controller for managing the text area's text content.
final
ellipsis TextModifier

Available on Widget, provided by the TextExtension extension

no setter
enabled bool
Whether the text area accepts user input.
final
expand Widget

Available on Widget, provided by the XWidget extension

no setter
expandableHeight bool
Whether the text area can be resized vertically by the user.
final
expandableWidth bool
Whether the text area can be resized horizontally by the user.
final
extraBold TextModifier

Available on Widget, provided by the TextExtension extension

no setter
extraLight TextModifier

Available on Widget, provided by the TextExtension extension

no setter
filled bool?
Whether the text area should display with a filled background.
final
firstP TextModifier

Available on Widget, provided by the TextExtension extension

no setter
flexible Widget

Available on Widget, provided by the XWidget extension

no setter
focusNode FocusNode?
Focus node for controlling keyboard focus.
final
foreground TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h1 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h2 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h3 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h4 TextModifier

Available on Widget, provided by the TextExtension extension

no setter
hashCode int
The hash code for this object.
no setterinherited
ih Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
initialHeight double
Initial height of the text area in logical pixels.
final
initialValue String?
Initial text value when no controller is provided.
final
initialWidth double
Initial width of the text area in logical pixels.
final
inlineCode TextModifier

Available on Widget, provided by the TextExtension extension

no setter
inputFormatters List<TextInputFormatter>?
Input formatters to apply to text input.
final
intrinsicHeight Widget

Available on Widget, provided by the XWidget extension

no setter
intrinsicSize Widget

Available on Widget, provided by the XWidget extension

no setter
intrinsicWidth Widget

Available on Widget, provided by the XWidget extension

no setter
italic TextModifier

Available on Widget, provided by the TextExtension extension

no setter
iw Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
keyboardType TextInputType?
The type of keyboard to display for text input.
final
large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
lead TextModifier

Available on Widget, provided by the TextExtension extension

no setter
leading Widget?
Widget displayed at the start of the text area.
final
li TextModifier

Available on Widget, provided by the TextExtension extension

no setter
light TextModifier

Available on Widget, provided by the TextExtension extension

no setter
maxHeight double
Maximum allowed height in logical pixels.
final
maxLength int?
Maximum number of characters allowed in the text area.
final
maxLengthEnforcement MaxLengthEnforcement?
How to handle input when maxLength is reached.
final
maxWidth double
Maximum allowed width in logical pixels.
final
medium TextModifier

Available on Widget, provided by the TextExtension extension

no setter
minHeight double
Minimum allowed height in logical pixels.
final
minWidth double
Minimum allowed width in logical pixels.
final
modify TextModifier

Available on Widget, provided by the TextExtension extension

no setter
mono TextModifier

Available on Widget, provided by the TextExtension extension

no setter
muted TextModifier

Available on Widget, provided by the TextExtension extension

no setter
normal TextModifier

Available on Widget, provided by the TextExtension extension

no setter
obscureText bool
Whether to obscure the text being edited.
final
obscuringCharacter String
Character used to obscure text when obscureText is true.
final
onChanged ValueChanged<String>?
Callback invoked when the text content changes.
final
onEditingComplete VoidCallback?
Callback invoked when text editing is completed.
final
onHeightChanged ValueChanged<double>?
Callback invoked when the text area height changes.
final
onSubmitted ValueChanged<String>?
Callback invoked when the user submits the text (e.g., presses Enter).
final
onTap VoidCallback?
Callback invoked when the text area is tapped.
final
onTapOutside → void Function(PointerDownEvent event)?
Callback invoked when the user taps outside the text area.
final
onWidthChanged ValueChanged<double>?
Callback invoked when the text area width changes.
final
p TextModifier

Available on Widget, provided by the TextExtension extension

no setter
padding EdgeInsetsGeometry?
Internal padding around the text area content.
final
placeholder Widget?
Widget to display when the text area is empty.
final
primaryForeground TextModifier

Available on Widget, provided by the TextExtension extension

no setter
readOnly bool
Whether the text area is read-only.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
safeArea Widget

Available on Widget, provided by the XWidget extension

no setter
sans TextModifier

Available on Widget, provided by the TextExtension extension

no setter
scrollable Widget

Available on Widget, provided by the XWidget extension

no setter
scrollableHorizontal Widget

Available on Widget, provided by the XWidget extension

no setter
secondaryForeground TextModifier

Available on Widget, provided by the TextExtension extension

no setter
semiBold TextModifier

Available on Widget, provided by the TextExtension extension

no setter
singleLine TextModifier

Available on Widget, provided by the TextExtension extension

no setter
small TextModifier

Available on Widget, provided by the TextExtension extension

no setter
style TextStyle?
Text style applied to the input text.
final
textAlign TextAlign
Horizontal alignment of the text within the text area.
final
textAlignVertical TextAlignVertical?
Vertical alignment of the text within the text area.
final
textCenter TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textEnd TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textInputAction TextInputAction?
The action button to display on the keyboard.
final
textJustify TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textLarge TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textLeft TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textMuted TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textRight TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textSmall TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textStart TextModifier

Available on Widget, provided by the TextExtension extension

no setter
thin TextModifier

Available on Widget, provided by the TextExtension extension

no setter
trailing Widget?
Widget displayed at the end of the text area.
final
underline TextModifier

Available on Widget, provided by the TextExtension extension

no setter
undoController UndoHistoryController?
Controller for managing undo/redo operations.
final
x2Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x3Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x4Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x5Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x6Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x7Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x8Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x9Large TextModifier

Available on Widget, provided by the TextExtension extension

no setter
xLarge TextModifier

Available on Widget, provided by the TextExtension extension

no setter
xSmall TextModifier

Available on Widget, provided by the TextExtension extension

no setter

Methods

animate({Key? key, List<Effect>? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) Animate

Available on Widget, provided by the AnimateWidgetExtensions extension

Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex. myWidget.animate() is equivalent to Animate(child: myWidget).
asSkeleton({bool enabled = true, bool leaf = false, Widget? replacement, bool unite = false, AsyncSnapshot? snapshot}) Widget

Available on Widget, provided by the SkeletonExtension extension

Converts the widget to a skeleton with advanced configuration options.
asSkeletonSliver({bool enabled = true}) Widget

Available on Widget, provided by the SkeletonExtension extension

Converts the widget to a skeleton suitable for sliver layouts.
ast(int ml) Widget

Available on Widget, provided by the XAST extension

center({Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

clip({Clip clipBehavior = Clip.hardEdge}) Widget

Available on Widget, provided by the WidgetExtension extension

clipOval({Clip clipBehavior = Clip.antiAlias}) Widget

Available on Widget, provided by the WidgetExtension extension

clipPath({Clip clipBehavior = Clip.antiAlias, required CustomClipper<Path> clipper}) Widget

Available on Widget, provided by the WidgetExtension extension

clipRRect({BorderRadiusGeometry borderRadius = BorderRadius.zero, Clip clipBehavior = Clip.antiAlias}) Widget

Available on Widget, provided by the WidgetExtension extension

constrained({double? minWidth, double? maxWidth, double? minHeight, double? maxHeight, double? width, double? height}) Widget

Available on Widget, provided by the WidgetExtension extension

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<TextArea>
Creates the mutable state for this widget at a given location in the tree.
override
debugContainer([Color color = Colors.red]) Widget

Available on Widget, provided by the DebugContainer extension

debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
excludeSkeleton({bool exclude = true}) Widget

Available on Widget, provided by the SkeletonExtension extension

Controls whether the widget should be preserved in skeleton mode.
expanded({int flex = 1}) Widget

Available on Widget, provided by the WidgetExtension extension

iconDestructiveForeground() Widget

Available on Widget, provided by the IconExtension extension

iconLarge() Widget

Available on Widget, provided by the IconExtension extension

iconMedium() Widget

Available on Widget, provided by the IconExtension extension

iconMutedForeground() Widget

Available on Widget, provided by the IconExtension extension

iconPrimary() Widget

Available on Widget, provided by the IconExtension extension

iconPrimaryForeground() Widget

Available on Widget, provided by the IconExtension extension

iconSecondary() Widget

Available on Widget, provided by the IconExtension extension

iconSecondaryForeground() Widget

Available on Widget, provided by the IconExtension extension

iconSmall() Widget

Available on Widget, provided by the IconExtension extension

iconX2Large() Widget

Available on Widget, provided by the IconExtension extension

iconX2Small() Widget

Available on Widget, provided by the IconExtension extension

iconX3Large() Widget

Available on Widget, provided by the IconExtension extension

iconX3Small() Widget

Available on Widget, provided by the IconExtension extension

iconX4Large() Widget

Available on Widget, provided by the IconExtension extension

iconX4Small() Widget

Available on Widget, provided by the IconExtension extension

iconXLarge() Widget

Available on Widget, provided by the IconExtension extension

iconXSmall() Widget

Available on Widget, provided by the IconExtension extension

ignoreSkeleton() Widget

Available on Widget, provided by the SkeletonExtension extension

Excludes the widget from skeleton effects in its parent skeleton context.
intrinsic({double? stepWidth, double? stepHeight}) Widget

Available on Widget, provided by the WidgetExtension extension

intrinsicHeight() Widget

Available on Widget, provided by the WidgetExtension extension

intrinsicWidth({double? stepWidth, double? stepHeight}) Widget

Available on Widget, provided by the WidgetExtension extension

isSliver(BuildContext context) bool

Available on Widget, provided by the XSliverWidget extension

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onDoublePressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for double press/tap gestures to this widget in Arcane UI.
onHover(void action(bool hovering)) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for hover events to this widget in Arcane UI.
onLongPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the primary button to this widget in Arcane UI.
onLongSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the secondary button to this widget in Arcane UI.
onLongTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the tertiary button to this widget in Arcane UI.
onPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for primary press/tap gestures to this widget in Arcane UI.
onSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for secondary press gestures (right-click) to this widget in Arcane UI.
onTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for tertiary press gestures (middle-click) to this widget in Arcane UI.
pad(double all) Widget

Available on Widget, provided by the XWidget extension

padBottom(double value) Widget

Available on Widget, provided by the XWidget extension

padBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) Widget

Available on Widget, provided by the XWidgetArcane extension

padHorizontal(double value) Widget

Available on Widget, provided by the XWidgetArcane extension

padLeft(double value) Widget

Available on Widget, provided by the XWidget extension

padOnly({double left = 0, double top = 0, double right = 0, double bottom = 0}) Widget

Available on Widget, provided by the XWidget extension

padRight(double value) Widget

Available on Widget, provided by the XWidget extension

padSliverBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) Widget

Available on Widget, provided by the XWidgetArcane extension

padSliverHorizontal(double value) Widget

Available on Widget, provided by the XWidgetArcane extension

padTop(double value) Widget

Available on Widget, provided by the XWidget extension

positioned({Key? key, double? left, double? top, double? right, double? bottom}) Widget

Available on Widget, provided by the WidgetExtension extension

shadeEdge(double radius) Widget

Available on Widget, provided by the XWidgetEdge extension

shadeFrost(double value) Widget

Available on Widget, provided by the XWidgetFrost extension

shadeInvert() Widget

Available on Widget, provided by the XWidgetInvert extension

shadePixelate(double radius) Widget

Available on Widget, provided by the XWidgetPixelate extension

shadePixelateBlur({int samples = 4, double pixelSize = 8, double radius = 2}) Widget

Available on Widget, provided by the XWidgetPixelateBlur extension

shadeRGB({double radius = 5, double spin = 1}) Widget

Available on Widget, provided by the XWidgetRGB extension

shadeWarp({double amplitude = 1, double frequency = 1, double z = 1, int octaves = 2}) Widget

Available on Widget, provided by the XWidgetWarp extension

shadeWarpAnimation({double amplitude = 1, double frequency = 1, double z = 1, double zSpeed = 1, int octaves = 2}) Widget

Available on Widget, provided by the XWidgetWarp extension

shimmer({bool loading = true}) Widget

Available on Widget, provided by the XWidgetArcane extension

sized({double? width, double? height}) Widget

Available on Widget, provided by the WidgetExtension extension

sized({double? width, double? height}) Widget

Available on Widget, provided by the XWidget extension

then(InlineSpan span) Widget

Available on Widget, provided by the TextExtension extension

thenButton({required VoidCallback onPressed, required Widget child}) Widget

Available on Widget, provided by the TextExtension extension

thenInlineCode(String text) Widget

Available on Widget, provided by the TextExtension extension

thenText(String text) Widget

Available on Widget, provided by the TextExtension extension

toBox(BuildContext context, {bool softWarn = true}) Widget

Available on Widget, provided by the XSliverWidget extension

toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toSliver(BuildContext context, {bool fillRemaining = false, bool softWarn = true}) Widget

Available on Widget, provided by the XSliverWidget extension

toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited
transform({Key? key, required Matrix4 transform}) Widget

Available on Widget, provided by the WidgetExtension extension

withAlign(AlignmentGeometry alignment) Widget

Available on Widget, provided by the WidgetExtension extension

withMargin({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all}) Widget

Available on Widget, provided by the WidgetExtension extension

withOpacity(double opacity) Widget

Available on Widget, provided by the WidgetExtension extension

withPadding({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all, EdgeInsetsGeometry? padding}) Widget

Available on Widget, provided by the WidgetExtension extension

withTooltip(String tooltip) Widget

Available on Widget, provided by the XWidgetArcane extension

Operators

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