buildDropdown<T> method

Widget buildDropdown<T>({
  1. required String label,
  2. required T value,
  3. required List<T> items,
  4. required String labelBuilder(
    1. T
    ),
  5. required ValueChanged<T?> onChanged,
})

Build a dropdown selector

Implementation

Widget buildDropdown<T>({
  required String label,
  required T value,
  required List<T> items,
  required String Function(T) labelBuilder,
  required ValueChanged<T?> onChanged,
}) {
  return Padding(
    padding: const EdgeInsets.symmetric(vertical: 8),
    child: Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
        Text(label, style: const TextStyle(fontSize: 13)),
        DropdownButton<T>(
          value: value,
          items: items.map((item) {
            return DropdownMenuItem<T>(
              value: item,
              child: Text(labelBuilder(item), style: const TextStyle(fontSize: 13)),
            );
          }).toList(),
          onChanged: (v) {
            if (v != null) {
              onChanged(v);
              onUpdate();
            }
          },
        ),
      ],
    ),
  );
}