showCascadePicker<D, V> function
Future<D?>
showCascadePicker<D, V>({
- required BuildContext context,
- required List<
D> datasource, - required ValueMapper<
D, String?> labelMapper, - required ValueMapper<
D, V?> ? valueMapper, - required ValueMapper<
D, List< childrenMapper,D> ?> - V? initialValue,
- D? initialData,
- SelectableWidgetBuilder<
D> ? itemBuilder, - IndexedDataWidgetBuilder<
D?> ? tabItemBuilder, - ListTileThemeData? listTheme,
- String? placeholder,
- bool? isParentNodeSelectable,
- String? title,
弹出级联选择器
Implementation
Future<D?> showCascadePicker<D, V>({
required BuildContext context,
required List<D> datasource,
required ValueMapper<D, String?> labelMapper,
required ValueMapper<D, V?>? valueMapper,
required ValueMapper<D, List<D>?> childrenMapper,
V? initialValue,
D? initialData,
SelectableWidgetBuilder<D>? itemBuilder,
IndexedDataWidgetBuilder<D?>? tabItemBuilder,
ListTileThemeData? listTheme,
String? placeholder,
bool? isParentNodeSelectable,
String? title,
}) async {
D? result = datasource.getInitialData<V>(
initialValue: initialValue,
initialData: initialData,
valueMapper: valueMapper,
);
return showDefaultBottomSheet<D>(
context,
title: title ?? '请选择',
contentBuilder: (context) {
return TxCascadePicker<D, V>(
datasource: datasource,
labelMapper: labelMapper,
valueMapper: valueMapper,
childrenMapper: childrenMapper,
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,
);
}