showCascadePicker<T, V> function
Future<T?>
showCascadePicker<T, V>({
- required BuildContext context,
- required List<
T> source, - required ValueMapper<
T, String?> labelMapper, - required ValueMapper<
T, List< childrenMapper,T> ?> - String? title,
- T? initialData,
- V? initialValue,
- ValueMapper<
T, V?> ? valueMapper, - DataWidgetBuilder<
T> ? subtitleBuilder, - ValueMapper<
T, bool> ? disabledWhen, - PickerItemBuilder<
T> ? itemBuilder, - bool? isScrollControlled,
- bool? showSearchField,
- Widget? placeholder,
- ListTileThemeData? listTileTheme,
- bool? parentCheckable,
弹出级联选择器
Implementation
Future<T?> showCascadePicker<T, V>({
required BuildContext context,
required List<T> source,
required ValueMapper<T, String?> labelMapper,
required ValueMapper<T, List<T>?> childrenMapper,
String? title,
T? initialData,
V? initialValue,
ValueMapper<T, V?>? valueMapper,
DataWidgetBuilder<T>? subtitleBuilder,
ValueMapper<T, bool>? disabledWhen,
PickerItemBuilder<T>? itemBuilder,
bool? isScrollControlled,
bool? showSearchField,
Widget? placeholder,
ListTileThemeData? listTileTheme,
bool? parentCheckable,
}) async {
T? result = source.getInitialData<V>(
initialValue: initialValue,
initialData: initialData,
valueMapper: valueMapper,
childrenMapper: childrenMapper,
);
return showDefaultBottomSheet<T>(
context,
title: title ?? '请选择',
contentBuilder: (context) {
return TxCascadePicker<T, V>(
source: source,
labelMapper: labelMapper,
valueMapper: valueMapper,
childrenMapper: childrenMapper,
initialData: initialData,
itemBuilder: itemBuilder,
listTileTheme: listTileTheme,
placeholder: placeholder,
parentCheckable: parentCheckable,
onChanged: (val) {
if (parentCheckable == true) {
result = val;
} else {
result = val;
}
},
disabledWhen: disabledWhen,
showSearchField: showSearchField,
subtitleBuilder: subtitleBuilder,
);
},
onConfirm: () => Navigator.pop(context, result),
actionsPosition: ActionsPosition.header,
isScrollControlled: true,
contentPadding: EdgeInsets.zero,
);
}