showMultiMapListCascadePicker<V> function

Future<List<Map>?> showMultiMapListCascadePicker<V>({
  1. required BuildContext context,
  2. required List<Map> source,
  3. String? valueKey,
  4. String? labelKey,
  5. String? idKey,
  6. String? pidKey,
  7. String? rootId,
  8. String? title,
  9. List<Map>? initialData,
  10. List<V>? initialValue,
  11. DataWidgetBuilder<Map>? subtitleBuilder,
  12. MultiPickerItemBuilder<Map>? itemBuilder,
  13. MultiPickerActionBarBuilder<Map>? actionBarBuilder,
  14. MultiPickerSelectedItemBuilder<Map>? selectedItemBuilder,
  15. bool? isScrollControlled,
  16. int? maxCount,
  17. ValueMapper<Map, bool>? disabledWhen,
  18. bool? showSearchField,
  19. Widget? placeholder,
  20. bool? parentCheckable,
  21. bool? linkage,
  22. 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,
  );
}