LineBuilder class
LineBuilder – Centralized line-level styling utilities for terminal views.
Provides reusable, theme-aware methods for common UI patterns found across terminal views and prompts. Eliminates duplication and ensures consistency.
Key patterns centralized:
- Frame prefix (left gutter with border vertical)
- Arrow/focus indicators
- Checkbox rendering
- Overflow indicators
- Line wrapping with optional inverse highlight
Usage:
final lb = LineBuilder(theme);
// Frame prefix for content lines
out.writeln('${lb.gutter()}Content here');
// Arrow indicator for focused item
final arrow = lb.arrow(isFocused);
out.writeln('${lb.gutter()}$arrow Item');
// Checkbox for toggleable items
final check = lb.checkbox(isChecked);
out.writeln('${lb.gutter()}$check Option');
// Full line with optional inverse highlight
lb.writeLine(out, 'Content', highlighted: isFocused);
// Overflow indicators for scrollable lists
if (hasOverflowAbove) out.writeln(lb.overflowLine());
Benefits:
- Single source of truth for styling patterns
- Consistent appearance across all views
- Easier theming customization
- Reduced boilerplate in view code
- Better testability
Constructors
- LineBuilder(PromptTheme theme)
-
Creates a LineBuilder with the given theme.
const
Properties
- features → DisplayFeatures
-
Shorthand access to the theme's feature configuration.
no setter
- glyphs → TerminalGlyphs
-
Shorthand access to the theme's glyph configuration.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- theme → PromptTheme
-
The theme providing colors and style symbols.
final
Methods
-
arrow(
bool focused) → String - Returns the arrow/focus indicator based on focus state.
-
arrowAccent(
) → String - Returns an accented arrow (always visible, used for bullets).
-
arrowDim(
) → String - Returns a dimmed arrow (for inactive/non-focused items).
-
checkbox(
bool checked) → String - Returns a styled checkbox based on checked state.
-
checkboxHighlighted(
bool checked, {bool highlight = false}) → String - Returns a highlighted checkbox (for focused items).
-
checkboxLine(
String content, {required bool focused, required bool checked}) → String - Builds a checkbox item line.
-
emptyLine(
String message) → String - Returns a complete empty message line with gutter prefix.
-
emptyMessage(
String message) → String - Returns a dimmed placeholder message in parentheses.
-
gutter(
) → String - Returns the standard left gutter/frame prefix.
-
gutterOnly(
) → String - Returns a gutter-only line (no trailing space, just the border).
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
overflow(
) → String - Returns the overflow indicator text (dimmed ellipsis).
-
overflowLine(
) → String - Returns a complete overflow line with gutter prefix.
-
selectableLine(
String content, {required bool focused}) → String - Builds a standard selectable item line.
-
switchControl(
bool on) → String - Returns a styled switch/toggle control.
-
switchControlHighlighted(
bool on, {bool highlight = false}) → String - Returns a highlighted switch control (for focused items).
-
toString(
) → String -
A string representation of this object.
inherited
-
writeCheckboxLine(
RenderOutput out, String content, {required bool focused, required bool checked, bool highlighted = false}) → void - Writes a checkbox item line with full formatting.
-
writeLine(
RenderOutput out, String content, {bool highlighted = false, bool includeGutter = true}) → void - Writes a content line to the output with optional inverse highlight.
-
writeLines(
RenderOutput out, Iterable< String> lines, {bool includeGutter = true}) → void - Writes multiple content lines with the same settings.
-
writeSelectableLine(
RenderOutput out, String content, {required bool focused, bool highlighted = false}) → void - Writes a selectable item line with full formatting.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited