import 'package:flutter/material.dart'; // import '../../../theme/app_colors.dart'; /// 통화 선택 위젯 /// KRW(원화), USD(달러), JPY(엔화), CNY(위안화) 중 선택할 수 있습니다. class CurrencySelector extends StatelessWidget { final String currency; final ValueChanged onChanged; final bool isGlassmorphism; // deprecated: ignored const CurrencySelector({ super.key, required this.currency, required this.onChanged, this.isGlassmorphism = false, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ _CurrencyOption( label: '₩', value: 'KRW', isSelected: currency == 'KRW', onTap: () => onChanged('KRW'), isGlassmorphism: isGlassmorphism, ), const SizedBox(width: 8), _CurrencyOption( label: '\$', value: 'USD', isSelected: currency == 'USD', onTap: () => onChanged('USD'), isGlassmorphism: isGlassmorphism, ), ], ), const SizedBox(height: 8), Row( children: [ _CurrencyOption( label: '¥', value: 'JPY', subtitle: 'JPY', isSelected: currency == 'JPY', onTap: () => onChanged('JPY'), isGlassmorphism: isGlassmorphism, ), const SizedBox(width: 8), _CurrencyOption( label: '¥', value: 'CNY', subtitle: 'CNY', isSelected: currency == 'CNY', onTap: () => onChanged('CNY'), isGlassmorphism: isGlassmorphism, ), ], ), ], ); } } /// 통화 옵션 버튼 class _CurrencyOption extends StatelessWidget { final String label; final String value; final String? subtitle; final bool isSelected; final VoidCallback onTap; final bool isGlassmorphism; // deprecated: ignored const _CurrencyOption({ required this.label, required this.value, this.subtitle, required this.isSelected, required this.onTap, required this.isGlassmorphism, }); @override Widget build(BuildContext context) { final theme = Theme.of(context); return Expanded( child: InkWell( onTap: onTap, borderRadius: BorderRadius.circular(12), child: Container( padding: const EdgeInsets.symmetric(vertical: 12), decoration: BoxDecoration( color: _getBackgroundColor(theme), borderRadius: BorderRadius.circular(12), border: _getBorder(theme), ), child: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ Text( label, style: TextStyle( fontSize: 18, fontWeight: FontWeight.w600, color: _getTextColor(theme), ), ), if (subtitle != null) ...[ const SizedBox(height: 2), Text( subtitle!, style: TextStyle( fontSize: 10, fontWeight: FontWeight.w500, color: _getTextColor(theme).withValues(alpha: 0.8), ), ), ], ], ), ), ), ), ); } Color _getBackgroundColor(ThemeData theme) { final scheme = theme.colorScheme; return isSelected ? scheme.primary : scheme.surface; } Border? _getBorder(ThemeData theme) { if (isSelected) return null; return Border.all( color: theme.colorScheme.outline.withValues(alpha: 0.6), width: 1, ); } Color _getTextColor(ThemeData theme) { final scheme = theme.colorScheme; return isSelected ? scheme.onPrimary : scheme.onSurface; } }