/// Checkout Dropdown Field Widget /// /// Reusable dropdown field for checkout forms. library; import 'package:flutter/material.dart'; import 'package:worker/core/constants/ui_constants.dart'; import 'package:worker/core/theme/colors.dart'; /// Checkout Dropdown Field /// /// Styled dropdown field with label and validation. class CheckoutDropdownField extends StatelessWidget { final String label; final String? value; final bool required; final List items; final void Function(String?) onChanged; const CheckoutDropdownField({ super.key, required this.label, required this.value, required this.required, required this.items, required this.onChanged, }); @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ RichText( text: TextSpan( text: label, style: TextStyle( fontSize: 14, fontWeight: FontWeight.w500, color: colorScheme.onSurface, ), children: [ if (required) const TextSpan( text: ' *', style: TextStyle(color: AppColors.danger), ), ], ), ), const SizedBox(height: 8), DropdownButtonFormField( initialValue: value, decoration: InputDecoration( filled: true, fillColor: colorScheme.surfaceContainerLowest, contentPadding: const EdgeInsets.symmetric( horizontal: 16, vertical: 12, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadius.input), borderSide: BorderSide(color: colorScheme.outlineVariant), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadius.input), borderSide: BorderSide(color: colorScheme.outlineVariant), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadius.input), borderSide: BorderSide( color: colorScheme.primary, width: 2, ), ), ), items: items.map((item) { return DropdownMenuItem(value: item, child: Text(item)); }).toList(), onChanged: onChanged, validator: (value) { if (required && (value == null || value.isEmpty)) { return 'Vui lòng chọn $label'; } return null; }, ), ], ); } }