scale method
Returns a scaled copy with all spatial fields and text size multiplied
by factor. See FolderNodeTheme.scale for shared contract details.
Scales: width, height, padding, margin, textStyle,
selectedTextStyle (preserves null), and the styles
textStyleResolver and selectedTextStyleResolver return.
Does NOT scale: tooltipTheme — see ADR-0004.
Identity: scale(1.0, defaultFontSize: …) returns this.
Implementation
ChildNodeTheme<T> scale(double factor, {required double defaultFontSize}) {
assert(factor > 0, 'scale factor must be > 0, got $factor');
if (factor == 1.0) return this;
return copyWith(
width: width * factor,
height: height * factor,
padding: padding * factor,
margin: margin * factor,
textStyle: scaleTextStyle(textStyle, factor, defaultFontSize),
textStyleResolver: textStyleResolver == null
? null
: (node) {
final style = textStyleResolver!(node);
return style == null
? null
: scaleTextStyle(style, factor, defaultFontSize);
},
selectedTextStyle: scaleOptionalTextStyle(
selectedTextStyle,
factor,
defaultFontSize,
),
selectedTextStyleResolver: selectedTextStyleResolver == null
? null
: (node) => scaleOptionalTextStyle(
selectedTextStyleResolver!(node),
factor,
defaultFontSize,
),
// tooltipTheme intentionally not delegated — ADR-0004 (chrome).
);
}