copyWith method
TextModel
copyWith({
- int? width,
- int? height,
- int? yOffset,
- int? xOffset,
- bool? mouseWheelEnabled,
- int? mouseWheelDelta,
- int? horizontalStep,
- ViewportKeyMap? keyMap,
- List<
String> ? lines, - int? gutter,
- bool? softWrap,
- bool? fillHeight,
- bool? showLineNumbers,
- GutterFunc? leftGutterFunc,
- Style? style,
- Style? highlightStyle,
- Style? selectedHighlightStyle,
- Style styleLineFunc(
- int lineIndex
- List<
HighlightInfo> ? highlights, - int? currentHighlightIndex,
- Object? selectionStart = undefined,
- Object? selectionEnd = undefined,
- DateTime? lastClickTime,
- (int, int)? lastClickPos,
- List<
String> ? wrappedLines, - List<
String> ? originalLines, - List<
StyleRange> ? styleRanges,
override
Creates a copy with the given fields replaced.
Implementation
@override
TextModel copyWith({
int? width,
int? height,
int? yOffset,
int? xOffset,
bool? mouseWheelEnabled,
int? mouseWheelDelta,
int? horizontalStep,
ViewportKeyMap? keyMap,
List<String>? lines,
int? gutter,
bool? softWrap,
bool? fillHeight,
bool? showLineNumbers,
GutterFunc? leftGutterFunc,
Style? style,
Style? highlightStyle,
Style? selectedHighlightStyle,
Style Function(int lineIndex)? styleLineFunc,
List<HighlightInfo>? highlights,
int? currentHighlightIndex,
Object? selectionStart = undefined,
Object? selectionEnd = undefined,
DateTime? lastClickTime,
(int, int)? lastClickPos,
List<String>? wrappedLines,
List<String>? originalLines,
List<ranges.StyleRange>? styleRanges,
}) {
final newWidth = width ?? this.width;
final newGutter = gutter ?? this.gutter;
final newSoftWrap = softWrap ?? this.softWrap;
final newOriginalLines = lines ?? originalLines ?? internalOriginalLines;
final newStyleRanges = styleRanges ?? this.styleRanges;
// Apply style ranges to original lines
var styledLines = lines ?? internalLines;
if (lines != null || styleRanges != null) {
styledLines = newOriginalLines;
if (newStyleRanges.isNotEmpty) {
final content = newOriginalLines.join('\n');
final styled = ranges.styleRanges(content, newStyleRanges);
styledLines = styled.split('\n');
}
}
List<String>? newWrappedLines = wrappedLines ?? internalWrappedLines;
if (newSoftWrap &&
(lines != null ||
width != null ||
gutter != null ||
softWrap != null ||
styleRanges != null)) {
final contentWidth = math.max(0, newWidth - newGutter);
final content = styledLines.join('\n');
final wrapped = uv_wrap.wrapAnsiPreserving(content, contentWidth);
newWrappedLines = wrapped.split('\n');
}
final newSelectionStart = selectionStart == undefined
? this.selectionStart
: selectionStart as (int, int)?;
final newSelectionEnd = selectionEnd == undefined
? this.selectionEnd
: selectionEnd as (int, int)?;
return TextModel.withOptions(
width: newWidth,
height: height ?? this.height,
gutter: newGutter,
yOffset: yOffset ?? this.yOffset,
xOffset: xOffset ?? this.xOffset,
mouseWheelEnabled: mouseWheelEnabled ?? this.mouseWheelEnabled,
mouseWheelDelta: mouseWheelDelta ?? this.mouseWheelDelta,
horizontalStep: horizontalStep ?? this.horizontalStep,
softWrap: newSoftWrap,
fillHeight: fillHeight ?? this.fillHeight,
showLineNumbers: showLineNumbers ?? this.showLineNumbers,
leftGutterFunc: leftGutterFunc ?? this.leftGutterFunc,
style: style ?? this.style,
highlightStyle: highlightStyle ?? this.highlightStyle,
selectedHighlightStyle:
selectedHighlightStyle ?? this.selectedHighlightStyle,
styleLineFunc: styleLineFunc ?? this.styleLineFunc,
highlights: highlights ?? this.highlights,
currentHighlightIndex:
currentHighlightIndex ?? this.currentHighlightIndex,
selectionStart: newSelectionStart,
selectionEnd: newSelectionEnd,
lastClickTime: lastClickTime ?? this.lastClickTime,
lastClickPos: lastClickPos ?? this.lastClickPos,
keyMap: keyMap ?? this.keyMap,
lines: styledLines,
wrappedLines: newWrappedLines,
originalLines: newOriginalLines,
styleRanges: newStyleRanges,
);
}