scale method

ChildNodeTheme<T> scale(
  1. double factor, {
  2. required double defaultFontSize,
})

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).
  );
}