dropdown static method

Widget dropdown({
  1. required String labelText,
  2. required String value,
  3. required List items,
  4. required void onChanged(
    1. String?
    )?,
  5. required String? remark,
  6. String? validator(
    1. String?
    )?,
  7. AutovalidateMode? autovalidateMode,
  8. required Size size,
  9. bool isMandatory = false,
  10. Color? textClr,
  11. Color? labelClr,
  12. Color? erTextClr,
  13. Color? borderClr,
  14. Color? focusedBorderClr,
  15. Color? enabledBorderClr,
  16. Color? focusedErBorderClr,
  17. Color? erBorderClr,
})

Implementation

static Widget dropdown({
  required String labelText,
  required String value,
  required List items,
  required void Function(String?)? onChanged,
  required String? remark,
  String? Function(String?)? validator,
  AutovalidateMode? autovalidateMode,
  required Size size,
  bool isMandatory = false,
  Color? textClr,
  Color? labelClr,
  Color? erTextClr,
  Color? borderClr,
  Color? focusedBorderClr,
  Color? enabledBorderClr,
  Color? focusedErBorderClr,
  Color? erBorderClr,
}) {
  return batchWidget(
    remark: remark,
    widget: Padding(
      padding: const EdgeInsets.only(bottom: 10.0),
      child: DropdownButtonHideUnderline(
        child: DropdownButtonFormField<String>(
          autovalidateMode: autovalidateMode,
          isExpanded: true,
          validator: validator,
          autofocus: false,
          style: TextStyle(
            color: textClr ?? TextFieldColor.textClr,
            fontSize: size.width * 0.04,
          ),
          decoration: InputDecoration(
            contentPadding: const EdgeInsets.only(left: 15.0, right: 5.0),
            label: Text(
              isMandatory ? '$labelText *' : labelText,
              style: TextStyle(
                color: labelClr ?? TextFieldColor.labelClr,
                fontSize: size.width * 0.04,
              ),
            ),
            floatingLabelBehavior: FloatingLabelBehavior.always,
            errorStyle: TextStyle(
                fontSize: size.width * 0.030,
                color: erTextClr ?? TextFieldColor.erTextClr),
            border: OutlineInputBorder(
              borderRadius: BorderRadius.circular(5.0),
              borderSide:
                  BorderSide(color: borderClr ?? TextFieldColor.borderClr),
            ),
            focusedBorder: OutlineInputBorder(
              borderRadius: BorderRadius.circular(5.0),
              borderSide: BorderSide(
                  color: focusedBorderClr ?? TextFieldColor.focusedBorderClr),
            ),
            enabledBorder: OutlineInputBorder(
              borderRadius: BorderRadius.circular(5.0),
              borderSide: BorderSide(
                  color: enabledBorderClr ?? TextFieldColor.enabledBorderClr),
            ),
            focusedErrorBorder: OutlineInputBorder(
              borderRadius: BorderRadius.circular(5.0),
              borderSide: BorderSide(
                  color: focusedErBorderClr ??
                      TextFieldColor.focusedErBorderClr),
            ),
            errorBorder: OutlineInputBorder(
              borderRadius: BorderRadius.circular(5.0),
              borderSide: BorderSide(
                  color: erBorderClr ?? TextFieldColor.erBorderClr),
            ),
          ),
          value: value,
          onChanged: onChanged,
          items: items.map((val) {
            return DropdownMenuItem<String>(
              value: val.toString(),
              child: Text(
                val.toString(),
                style: const TextStyle(color: Colors.black54),
              ),
            );
          }).toList(),
        ),
      ),
    ),
  );
}