resolve method

  1. @override
RSwitchListTileResolvedTokens resolve({
  1. required BuildContext context,
  2. required RSwitchListTileSpec spec,
  3. required Set<WidgetState> states,
  4. BoxConstraints? constraints,
  5. RenderOverrides? overrides,
})

Implementation

@override
RSwitchListTileResolvedTokens resolve({
  required BuildContext context,
  required RSwitchListTileSpec spec,
  required Set<WidgetState> states,
  BoxConstraints? constraints,
  RenderOverrides? overrides,
}) {
  final motionTheme =
      HeadlessThemeProvider.of(context)?.capability<HeadlessMotionTheme>() ??
          HeadlessMotionTheme.cupertino;

  final q = HeadlessWidgetStateQuery(states);
  final tileOverrides = overrides?.get<RSwitchListTileOverrides>();

  final effectiveBrightness =
      brightness ?? MediaQuery.platformBrightnessOf(context);
  final isDark = effectiveBrightness == Brightness.dark;

  final baseTitle = TextStyle(
    fontSize: 17,
    fontWeight: FontWeight.w400,
    color: isDark ? CupertinoColors.white : CupertinoColors.black,
  );
  final baseSubtitle = TextStyle(
    fontSize: 15,
    fontWeight: FontWeight.w400,
    color:
        isDark ? CupertinoColors.systemGrey : CupertinoColors.secondaryLabel,
  );

  Color? titleColor;
  Color? subtitleColor;

  if (q.isDisabled) {
    titleColor = CupertinoColors.systemGrey.withValues(alpha: 0.5);
    subtitleColor = CupertinoColors.systemGrey.withValues(alpha: 0.5);
  } else if (q.isSelected) {
    final selectedColor = spec.selectedColor ?? CupertinoColors.activeBlue;
    titleColor = selectedColor;
    subtitleColor = selectedColor;
  }

  final titleStyle =
      (tileOverrides?.titleStyle ?? baseTitle).copyWith(color: titleColor);
  final subtitleStyle =
      (tileOverrides?.subtitleStyle ?? baseSubtitle).copyWith(
    color: subtitleColor,
  );

  final minHeight = _resolveMinHeight(spec, constraints);

  return RSwitchListTileResolvedTokens(
    contentPadding: tileOverrides?.contentPadding ??
        spec.contentPadding ??
        const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
    minHeight: tileOverrides?.minHeight ?? minHeight,
    horizontalGap: tileOverrides?.horizontalGap ?? 12,
    verticalGap: tileOverrides?.verticalGap ?? 2,
    titleStyle: titleStyle,
    subtitleStyle: subtitleStyle,
    disabledOpacity: tileOverrides?.disabledOpacity ?? 1.0,
    pressOverlayColor: tileOverrides?.pressOverlayColor ??
        CupertinoColors.systemGrey.withValues(alpha: 0.12),
    pressOpacity: tileOverrides?.pressOpacity ?? 0.4,
    motion: tileOverrides?.motion ??
        RSwitchListTileMotionTokens(
          stateChangeDuration: motionTheme.button.stateChangeDuration,
        ),
  );
}