withTokens static method

ThemeData withTokens(
  1. ThemeData base, {
  2. SPThemeTokens? tokens,
  3. SPSpacingTokens spacing = const SPSpacingTokens(),
  4. SPRadiusTokens radius = const SPRadiusTokens(),
  5. SPTypographyTokens typography = const SPTypographyTokens(),
  6. bool applyTypography = false,
})

Returns base with Sixplace tokens installed or replaced.

Set applyTypography to true to apply the resolved Sixplace typography sizes to the existing ThemeData.textTheme.

Implementation

static ThemeData withTokens(
  ThemeData base, {
  SPThemeTokens? tokens,
  SPSpacingTokens spacing = const SPSpacingTokens(),
  SPRadiusTokens radius = const SPRadiusTokens(),
  SPTypographyTokens typography = const SPTypographyTokens(),
  bool applyTypography = false,
}) {
  final resolved =
      tokens ??
      SPThemeTokens.fromColorScheme(
        base.colorScheme,
        spacing: spacing,
        radius: radius,
        typography: typography,
      );
  final extensions = base.extensions.values
      .where((value) => value is! SPThemeTokens)
      .toList();
  extensions.add(resolved);
  return base.copyWith(
    textTheme: applyTypography
        ? resolved.typography.apply(base.textTheme)
        : null,
    extensions: extensions,
  );
}