showCascadePicker<T, V> function

Future<T?> showCascadePicker<T, V>({
  1. required BuildContext context,
  2. required List<T> source,
  3. required ValueMapper<T, String?> labelMapper,
  4. required ValueMapper<T, List<T>?> childrenMapper,
  5. String? title,
  6. T? initialData,
  7. V? initialValue,
  8. ValueMapper<T, V?>? valueMapper,
  9. DataWidgetBuilder<T>? subtitleBuilder,
  10. ValueMapper<T, bool>? disabledWhen,
  11. PickerItemBuilder<T>? itemBuilder,
  12. bool? isScrollControlled,
  13. bool? showSearchField,
  14. Widget? placeholder,
  15. ListTileThemeData? listTileTheme,
  16. bool? parentCheckable,
})

弹出级联选择器

Implementation

Future<T?> showCascadePicker<T, V>({
  required BuildContext context,
  required List<T> source,
  required ValueMapper<T, String?> labelMapper,
  required ValueMapper<T, List<T>?> childrenMapper,
  String? title,
  T? initialData,
  V? initialValue,
  ValueMapper<T, V?>? valueMapper,
  DataWidgetBuilder<T>? subtitleBuilder,
  ValueMapper<T, bool>? disabledWhen,
  PickerItemBuilder<T>? itemBuilder,
  bool? isScrollControlled,
  bool? showSearchField,
  Widget? placeholder,
  ListTileThemeData? listTileTheme,
  bool? parentCheckable,
}) async {
  T? result = source.getInitialData<V>(
    initialValue: initialValue,
    initialData: initialData,
    valueMapper: valueMapper,
    childrenMapper: childrenMapper,
  );
  return showDefaultBottomSheet<T>(
    context,
    title: title ?? '请选择',
    contentBuilder: (context) {
      return TxCascadePicker<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;
          }
        },
        disabledWhen: disabledWhen,
        showSearchField: showSearchField,
        subtitleBuilder: subtitleBuilder,
      );
    },
    onConfirm: () => Navigator.pop(context, result),
    actionsPosition: ActionsPosition.header,
    isScrollControlled: true,
    contentPadding: EdgeInsets.zero,
  );
}