import 'package:flutter/material.dart'; import '../../core/theme/design_tokens.dart'; class AppToggleSwitch extends StatelessWidget { const AppToggleSwitch({ super.key, required this.value, this.onChanged, this.activeBackgroundColor, this.inactiveBackgroundColor, this.activeBorderColor, this.inactiveBorderColor, }); final bool value; final ValueChanged? onChanged; final Color? activeBackgroundColor; final Color? inactiveBackgroundColor; final Color? activeBorderColor; final Color? inactiveBorderColor; @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; return GestureDetector( onTap: onChanged == null ? null : () => onChanged!(!value), child: Opacity( opacity: onChanged == null ? 0.55 : 1, child: Container( width: AppSpacing.xxl + AppSpacing.xl, height: AppSpacing.xl + AppSpacing.xs, padding: const EdgeInsets.all(AppSpacing.xs / 2), decoration: BoxDecoration( color: value ? (activeBackgroundColor ?? colorScheme.primaryContainer) : (inactiveBackgroundColor ?? colorScheme.tertiaryContainer), borderRadius: BorderRadius.circular(AppRadius.full), border: Border.all( color: value ? (activeBorderColor ?? colorScheme.tertiary) : (inactiveBorderColor ?? colorScheme.outlineVariant), ), ), child: AnimatedAlign( duration: const Duration(milliseconds: 150), alignment: value ? Alignment.centerRight : Alignment.centerLeft, child: Container( width: AppSpacing.lg + AppSpacing.xs, height: AppSpacing.lg + AppSpacing.xs, decoration: BoxDecoration( color: colorScheme.surface, borderRadius: BorderRadius.circular(AppRadius.full), border: Border.all(color: colorScheme.outlineVariant), ), ), ), ), ), ); } }