showMapListCascadePicker<V> function
Future<Map?>
showMapListCascadePicker<V>({
- required BuildContext context,
- required List<
Map> datasource, - String? valueKey,
- String? labelKey,
- String? idKey,
- String? pidKey,
- String? childrenKey,
- V? initialValue,
- Map? initialData,
- SelectableWidgetBuilder<
Map> ? itemBuilder, - IndexedDataWidgetBuilder<
Map?> ? tabItemBuilder, - ListTileThemeData? listTheme,
- String? placeholder,
- bool? isParentNodeSelectable,
- String? title,
弹出数据为 Map 列表类型级联选择器
Implementation
Future<Map?> showMapListCascadePicker<V>({
required BuildContext context,
required List<Map> datasource,
String? valueKey,
String? labelKey,
String? idKey,
String? pidKey,
String? childrenKey,
V? initialValue,
Map? initialData,
SelectableWidgetBuilder<Map>? itemBuilder,
IndexedDataWidgetBuilder<Map?>? tabItemBuilder,
ListTileThemeData? listTheme,
String? placeholder,
bool? isParentNodeSelectable,
String? title,
}) async {
Map? result = datasource.getInitialData<V>(
initialValue: initialValue,
initialData: initialData,
valueMapper: (data) => data[valueKey ?? idKey],
);
return showDefaultBottomSheet<Map>(
context,
title: title ?? '请选择',
contentBuilder: (context) {
return TxCascadePicker<Map, V>.fromMapList(
datasource: datasource,
labelKey: labelKey,
valueKey: valueKey,
idKey: idKey,
pidKey: pidKey,
childrenKey: childrenKey,
initialData: initialData,
itemBuilder: itemBuilder,
tabItemBuilder: tabItemBuilder,
listTheme: listTheme,
placeholder: placeholder,
isParentNodeSelectable: isParentNodeSelectable,
onChanged: (val) {
if (isParentNodeSelectable == true) {
result = val;
} else {
Navigator.pop(context, val);
}
},
);
},
showConfirmButton: isParentNodeSelectable == true,
onConfirm: () => Navigator.pop(context, result),
actionsPosition: ActionsPosition.footer,
);
}