TdFormCascader<T> constructor
TdFormCascader<T> ({
- Key? key,
- FormFieldSetter<
T> ? onSaved, - FormFieldValidator<
T> ? validator, - T? initialValue,
- required List<
TdCascaderItem< options,T> > - AutovalidateMode? autovalidateMode,
- ValueChanged<
T?> ? onChanged, - Widget? label,
- double? labelWidth,
- TextAlign? labelAlign,
- Widget? help,
- String? hintText,
Implementation
TdFormCascader({
super.key,
super.onSaved,
super.validator,
super.initialValue,
required List<TdCascaderItem<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) {
final List<String> list = [];
if (_queryStack(options, field.value, list)) {
hintTextWidget = Text(list.join(' / '));
}
} else if (hintText != null) {
hintTextWidget = Text(hintText);
}
final contentWidget = TdFormPickerView(
onTap: () async {
final result = await TdCascaderPlugin.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,
);
},
);