buildColumnWithDropdown function
Implementation
Widget buildColumnWithDropdown(
String label,
List<String> items,
String? selectedValue,
String hintText,
Function(String?) onChanged,
bool isRequired,
) {
final bool isDisabled = items.isEmpty;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildLabel(label, isRequired),
const SizedBox(height: 8),
Container(
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [Color(0xFF2A2D2F), Color(0xFF1F2123)],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 4,
offset: const Offset(0, 2),
),
],
),
child: DropdownButtonFormField<String>(
isExpanded: true,
value: items.contains(selectedValue) ? selectedValue : null,
items:
items
.map(
(e) => DropdownMenuItem<String>(
value: e,
child: Text(
e,
style: const TextStyle(
color: Colors.white,
overflow: TextOverflow.ellipsis,
),
),
),
)
.toList(),
onChanged: isDisabled ? null : onChanged,
decoration: _inputDecoration(hintText),
dropdownColor: const Color(0xFF1F2123),
validator:
isRequired
? (val) =>
(val == null || val.isEmpty) ? "$label is required" : null
: null,
),
),
],
);
}