createGBSwitchTheme function
SwitchThemeData
createGBSwitchTheme({
- required Color accentColor,
- required Color backgroundDisabled,
- SwitchThemeData? customTheme,
Creates default SwitchThemeData for GB UI Kit switches.
Implementation
SwitchThemeData createGBSwitchTheme({
required Color accentColor,
required Color backgroundDisabled,
SwitchThemeData? customTheme,
}) {
final defaultTheme = SwitchThemeData(
thumbColor: WidgetStateProperty.resolveWith<Color>((states) {
if (states.contains(WidgetState.disabled)) {
return const Color(0xffb0b0b0);
}
return Colors.white;
}),
trackColor: WidgetStateProperty.resolveWith<Color>((states) {
if (states.contains(WidgetState.selected)) {
if (states.contains(WidgetState.disabled)) {
return accentColor.withValues(alpha: 0.5);
}
return accentColor;
}
if (states.contains(WidgetState.disabled)) {
return const Color(0xffe5e5e5);
}
return const Color(0xffe0e0e2);
}),
trackOutlineColor: WidgetStateProperty.resolveWith<Color>((states) {
if (states.contains(WidgetState.selected)) {
return Colors.transparent;
}
if (states.contains(WidgetState.disabled)) {
return const Color(0xffd5d5d5);
}
return const Color(0xffc7c7cc);
}),
trackOutlineWidth: const WidgetStatePropertyAll<double>(1.0),
);
return customTheme != null
? defaultTheme.copyWith(
thumbColor: customTheme.thumbColor,
trackColor: customTheme.trackColor,
trackOutlineColor: customTheme.trackOutlineColor,
trackOutlineWidth: customTheme.trackOutlineWidth,
materialTapTargetSize: customTheme.materialTapTargetSize,
mouseCursor: customTheme.mouseCursor,
overlayColor: customTheme.overlayColor,
splashRadius: customTheme.splashRadius,
thumbIcon: customTheme.thumbIcon,
)
: defaultTheme;
}