showMultiMapListCascadePicker<V> function
Future<List<Map> ?>
showMultiMapListCascadePicker<V>({
- required BuildContext context,
- required List<
Map> source, - String? valueKey,
- String? labelKey,
- String? idKey,
- String? pidKey,
- String? rootId,
- String? title,
- List<
Map> ? initialData, - List<
V> ? initialValue, - DataWidgetBuilder<
Map> ? subtitleBuilder, - MultiPickerItemBuilder<
Map> ? itemBuilder, - MultiPickerActionBarBuilder<
Map> ? actionBarBuilder, - MultiPickerSelectedItemBuilder<
Map> ? selectedItemBuilder, - bool? isScrollControlled,
- int? maxCount,
- ValueMapper<
Map, bool> ? disabledWhen, - bool? showSearchField,
- Widget? placeholder,
- bool? parentCheckable,
- bool? linkage,
- ListTileThemeData? listTileTheme,
弹出数据为 Map 列表类型多选级联选择器
Implementation
Future<List<Map>?> showMultiMapListCascadePicker<V>({
required BuildContext context,
required List<Map> source,
String? valueKey,
String? labelKey,
String? idKey,
String? pidKey,
String? rootId,
String? title,
List<Map>? initialData,
List<V>? initialValue,
DataWidgetBuilder<Map>? subtitleBuilder,
MultiPickerItemBuilder<Map>? itemBuilder,
MultiPickerActionBarBuilder<Map>? actionBarBuilder,
MultiPickerSelectedItemBuilder<Map>? selectedItemBuilder,
bool? isScrollControlled,
int? maxCount,
ValueMapper<Map, bool>? disabledWhen,
bool? showSearchField,
Widget? placeholder,
bool? parentCheckable,
bool? linkage,
ListTileThemeData? listTileTheme,
}) async {
List<Map>? result = source.getInitialList<V>(
initialValue: initialValue,
initialData: initialData,
valueMapper: (data) => data[valueKey ?? idKey],
);
return showDefaultBottomSheet<List<Map>>(
context,
title: title ?? '请选择',
contentBuilder: (context) {
return TxMultiCascadePicker<Map, V>.fromMapList(
source: source,
labelKey: labelKey,
valueKey: valueKey,
idKey: idKey,
pidKey: pidKey,
rootId: rootId,
initialData: initialData,
itemBuilder: itemBuilder,
subtitleBuilder: subtitleBuilder,
listTileTheme: listTileTheme,
placeholder: placeholder,
parentCheckable: parentCheckable,
onChanged: (val) {
if (parentCheckable == true) {
result = val;
} else {
result = val;
}
},
maxCount: maxCount,
disabledWhen: disabledWhen,
linkage: linkage,
actionBarBuilder: actionBarBuilder,
selectedItemBuilder: selectedItemBuilder,
showSearchField: showSearchField,
);
},
onConfirm: () => Navigator.pop(context, result),
actionsPosition: ActionsPosition.header,
isScrollControlled: true,
contentPadding: EdgeInsets.zero,
);
}