TerminalView class

Pure render + input view over a TerminalEngine.

Owns render state (font, metrics, glyph cache, bell controller, blink timer), IME session, and pointer/selection state. Hotkeys are dispatched through Flutter's Shortcuts + Actions framework rather than an inline switch — see shortcuts and actions. Does NOT own the engine, the PTY, the search bar widget, drop handling, the right-click context menu, or URL launching — those stay on the host (the reference example is ExampleTerminalApp) and are wired in via the callback hooks below.

Inheritance

Constructors

TerminalView(TerminalEngine engine, {Key? key, TerminalController? controller, TerminalTheme theme = TerminalTheme.defaults, TerminalStyle? textStyle, EdgeInsets? padding, double backgroundOpacity = 1.0, FocusNode? focusNode, bool autofocus = true, MouseCursor mouseCursor = SystemMouseCursors.text, bool readOnly = false, Duration cursorBlinkInterval = const Duration(milliseconds: 530), Duration cursorBlinkTimeout = const Duration(seconds: 5), Duration bellDuration = Duration.zero, Duration doubleClickThreshold = const Duration(milliseconds: 300), int scrollMultiplier = 3, double scrollSensitivity = 1.15, double fastScrollSensitivity = 5.0, int tuiScrollSensitivity = 1, int preeditBg = 0x282828, int preeditFg = 0xD8D8D8, bool preeditUnderline = true, Map<ShortcutActivator, Intent>? shortcuts, Map<Type, Action<Intent>>? actions, void onTapDown(TapDownDetails, CellOffset)?, void onTapUp(TapUpDetails, CellOffset)?, void onSecondaryTapDown(TapDownDetails, CellOffset)?, void onSecondaryTapUp(TapUpDetails, CellOffset)?, void onLinkActivate(String uri)?, bool primaryTapActivatesLink = false, void onBell()?, void onPtyResize(int columns, int rows)?, bool? preferGpuSurface, ModifierLatch? modifierLatch, List<TerminalLinkProvider>? linkProviders})

Properties

actions → Map<Type, Action<Intent>>?
Action handlers for the intents dispatched by shortcuts. null means the view builds defaultTerminalActions internally (with a no-op paste/search/zoom and a self-contained copy that writes the engine selection to the system clipboard). Hosts typically supply their own actions to wire host-side semantics (search-bar visibility, custom paste filtering, etc.).
final
autofocus → bool
final
backgroundOpacity → double
final
bellDuration → Duration
Bell flash duration (zero disables the visual bell).
final
controller → TerminalController?
final
cursorBlinkInterval → Duration
Cursor blink half-period.
final
cursorBlinkTimeout → Duration
Stop blinking after this much inactivity (no terminal input); the cursor then stays solid until the next input. Duration.zero = never stop. Mirrors alacritty's cursor.blink_timeout.
final
doubleClickThreshold → Duration
Double/triple-click window for word/line selection.
final
engine → TerminalEngine
final
fastScrollSensitivity → double
Orca/xterm fastScrollSensitivity (default 5) when Alt is held on history.
final
focusNode → FocusNode?
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
linkProviders → List<TerminalLinkProvider>
Host-injectable link sources. Defaults to const [] (no per-line regex scan on PTY output); pass e.g. [UrlLinkProvider()] to enable URL detection. OSC 8 hyperlinks from the engine work without any provider.
final
modifierLatch → ModifierLatch?
Optional sticky virtual modifiers for touch accessory keys.
final
mouseCursor → MouseCursor
final
onBell → void Function()?
Bell event hook (fires in addition to the visual flash). If null, the view plays a system alert sound (current behavior).
final
onLinkActivate → void Function(String uri)?
final
onPtyResize → void Function(int columns, int rows)?
Fired after the engine and mirror grid adopt (columns, rows). Wire to PtyBackend.resize(rows, columns). The engine resizes before this fires.
final
onSecondaryTapDown → void Function(TapDownDetails, CellOffset)?
final
onSecondaryTapUp → void Function(TapUpDetails, CellOffset)?
final
onTapDown → void Function(TapDownDetails, CellOffset)?
final
onTapUp → void Function(TapUpDetails, CellOffset)?
final
padding → EdgeInsets?
final
preeditBg → int
Preedit overlay colors / underline (packed RGB, alpha forced full).
final
preeditFg → int
final
preeditUnderline → bool
final
preferGpuSurface → bool?
Surface selection: null auto-probes, true forces a GPU attempt, false forces the CustomPainter path (never probes).
final
When true, a plain (unmodified) left-click on a hyperlink or detected-link cell fires onLinkActivate instead of forwarding the click to the program (or starting a selection). Ctrl/Cmd-click always activates links regardless. Non-link cells are unaffected — they still select / report to the program as usual. Defaults to false to preserve standard terminal mouse semantics; hosts that prefer click-to-open opt in.
final
readOnly → bool
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
scrollMultiplier → int
Approximate lines scrolled per wheel notch (alacritty's scrolling.multiplier; default 3). History wheel uses discrete scrollLines; touch pan/fling use sub-cell scrollPixels. Combined with scrollSensitivity as (scrollMultiplier / 3) * scrollSensitivity so the default matches Orca's xterm scrollSensitivity of 1.15.
final
scrollSensitivity → double
Orca/xterm scrollSensitivity (default 1.15) for history scroll speed.
final
shortcuts → Map<ShortcutActivator, Intent>?
Hotkey bindings. null means use defaultTerminalShortcuts; pass an empty map (const {}) to disable every default; pass any other map to override individual entries (the view does NOT merge with defaults — the supplied map is the complete shortcut set).
final
textStyle → TerminalStyle
final
theme → TerminalTheme
final
tuiScrollSensitivity → int
Mouse-report TUI wheel sensitivity (1..10). Alternate-scroll still uses scrollMultiplier / scrollSensitivity.
final

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<TerminalView>
Creates the mutable state for this widget at a given location in the tree.
override
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
noSuchMethod(Invocation invocation) → 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 debugging tools and by DiagnosticsNode.toStringDeep.
inherited
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

Operators

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