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:
- Fixed size: When both expandableHeight and expandableWidth are false
- Expandable height: When expandableHeight is true, allows vertical resizing
- Expandable width: When expandableWidth is true, allows horizontal resizing
- Fully expandable: When both expansion modes are enabled
Example:
TextArea(
placeholder: Text('Enter your message...'),
expandableHeight: true,
minHeight: 100,
maxHeight: 300,
onChanged: (text) => print('Text: $text'),
);
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- TextArea
- 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 toAnimate(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 -
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 -
padBottom(
double value) → Widget -
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 -
padOnly(
{double left = 0, double top = 0, double right = 0, double bottom = 0}) → Widget -
padRight(
double value) → Widget -
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 -
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 -
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