showMultiCascadePicker<T, V> function
Future<List<T> ?>
showMultiCascadePicker<T, V>({
- required BuildContext context,
- required List<
T> source, - required ValueMapper<
T, String?> labelMapper, - required ValueMapper<
T, List< childrenMapper,T> ?> - String? title,
- List<
T> ? initialData, - List<
V> ? initialValue, - ValueMapper<
T, V?> ? valueMapper, - DataWidgetBuilder<
T> ? subtitleBuilder, - MultiPickerItemBuilder<
T> ? itemBuilder, - MultiPickerActionBarBuilder<
T> ? actionBarBuilder, - MultiPickerSelectedItemBuilder<
T> ? selectedItemBuilder, - bool? isScrollControlled,
- int? maxCount,
- ValueMapper<
T, bool> ? disabledWhen, - bool? showSearchField,
- Widget? placeholder,
- bool? parentCheckable,
- bool? linkage,
- ListTileThemeData? listTileTheme,
弹出多选级联选择器
Implementation
Future<List<T>?> showMultiCascadePicker<T, V>({
required BuildContext context,
required List<T> source,
required ValueMapper<T, String?> labelMapper,
required ValueMapper<T, List<T>?> childrenMapper,
String? title,
List<T>? initialData,
List<V>? initialValue,
ValueMapper<T, V?>? valueMapper,
DataWidgetBuilder<T>? subtitleBuilder,
MultiPickerItemBuilder<T>? itemBuilder,
MultiPickerActionBarBuilder<T>? actionBarBuilder,
MultiPickerSelectedItemBuilder<T>? selectedItemBuilder,
bool? isScrollControlled,
int? maxCount,
ValueMapper<T, bool>? disabledWhen,
bool? showSearchField,
Widget? placeholder,
bool? parentCheckable,
bool? linkage,
ListTileThemeData? listTileTheme,
}) async {
List<T>? result = source.getInitialList<V>(
initialValue: initialValue,
initialData: initialData,
valueMapper: valueMapper,
childrenMapper: childrenMapper,
);
return showDefaultBottomSheet<List<T>>(
context,
title: title ?? '请选择部门',
contentBuilder: (context) {
return TxMultiCascadePicker<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;
}
},
maxCount: maxCount,
linkage: linkage,
actionBarBuilder: actionBarBuilder,
selectedItemBuilder: selectedItemBuilder,
disabledWhen: disabledWhen,
subtitleBuilder: subtitleBuilder,
showSearchField: showSearchField,
);
},
onConfirm: () => Navigator.pop(context, result),
actionsPosition: ActionsPosition.header,
isScrollControlled: true,
contentPadding: EdgeInsets.zero,
);
}