TdFormPicker<T> constructor

TdFormPicker<T>({
  1. Key? key,
  2. FormFieldSetter<T>? onSaved,
  3. FormFieldValidator<T>? validator,
  4. T? initialValue,
  5. required List<TdPickerItem<T>> options,
  6. AutovalidateMode? autovalidateMode,
  7. ValueChanged<T?>? onChanged,
  8. Widget? label,
  9. double? labelWidth,
  10. TextAlign? labelAlign,
  11. Widget? help,
  12. String? hintText,
})

Implementation

TdFormPicker({
  super.key,
  super.onSaved,
  super.validator,
  super.initialValue,
  required List<TdPickerItem<T>> options,
  super.autovalidateMode,
  ValueChanged<T?>? onChanged,
  Widget? label,
  double? labelWidth,
  TextAlign? labelAlign,
  Widget? help,
  String? hintText,
}) : super(
        builder: (field) {
          void handleChanged(T? value) {
            field.didChange(value);

            onChanged?.call(value);
          }

          Widget? errorTextWidget;
          if (field.errorText != null) {
            errorTextWidget = Text(field.errorText!);
          }

          Widget? hintTextWidget;
          if (field.value != null) {
            for (var i = 0; i < options.length; i++) {
              if (options[i].value == field.value) {
                hintTextWidget = options[i].label;

                break;
              }
            }
          } else if (hintText != null) {
            hintTextWidget = Text(hintText);
          }

          final contentWidget = TdFormPickerView(
            onTap: () async {
              final result = await TdPickerPlugin.open(
                field.value,
                title: label,
                options: options,
              );

              handleChanged(result);
            },
            content: hintTextWidget,
          );

          return TdFormItem(
            label: label,
            labelWidth: labelWidth,
            labelAlign: labelAlign,
            help: help,
            errorMessage: errorTextWidget,
            contentAlign: TdFormItemAlign.end,
            child: contentWidget,
          );
        },
      );