showItemPickerBottomSheet<T extends PickerItemModel> function

void showItemPickerBottomSheet<T extends PickerItemModel>({
  1. required BuildContext context,
  2. required ItemPickerService<T> service,
  3. List<T>? selectedItems,
  4. dynamic callback(
    1. List<T>
    )?,
  5. ItemPickerItemBuilder<T>? itemBuilder,
  6. Widget errorBuilder(
    1. Exception
    )?,
  7. Widget emptyBuilder()?,
  8. Widget separatorBuilder(
    1. BuildContext context,
    2. int index
    )?,
  9. String? title,
  10. WidgetBuilder? footerBuilder,
  11. ItemPickerConfiguration configuration = const ItemPickerConfiguration(),
  12. ItemPickerModalConfiguration modalConfiguration = const ItemPickerModalConfiguration(),
  13. String? saveButtonText,
})

Display an bottom sheet with list content where the user can pick single or multiple items

It required an context, title, a list of the possible selected items as selectedItems, on tap function as callback and a service

Additionally you can specify an custom itemBuilder, custom errorBuilder, custom emptyBuilder, custom separatorBuilder and a custom footerBuilder.

The user can specify more specific configurations inside configuration. There is one extra field to set the saveButtonText.

Implementation

void showItemPickerBottomSheet<T extends PickerItemModel>({
  required BuildContext context,
  required ItemPickerService<T> service,
  List<T>? selectedItems,
  Function(List<T>)? callback,
  ItemPickerItemBuilder<T>? itemBuilder,
  Widget Function(Exception)? errorBuilder,
  Widget Function()? emptyBuilder,
  Widget Function(BuildContext context, int index)? separatorBuilder,
  String? title,
  WidgetBuilder? footerBuilder,
  ItemPickerConfiguration configuration = const ItemPickerConfiguration(),
  ItemPickerModalConfiguration modalConfiguration =
      const ItemPickerModalConfiguration(),
  String? saveButtonText,
}) {
  showBlurredBottomSheet(
    context: context,
    configuration: modalConfiguration,
    onCancelPressed: () => Navigator.of(context).pop(),
    builder: (context) => ItemPickerPageWithDependencies<T>(
      title: title,
      saveButtonText: saveButtonText,
      itemBuilder: itemBuilder,
      errorBuilder: errorBuilder,
      emptyBuilder: emptyBuilder,
      separatorBuilder: separatorBuilder,
      footerBuilder: footerBuilder,
      selectedItems: selectedItems,
      onTap: (items) {
        callback?.call(items.whereType<T>().toList());
        Navigator.of(context).pop();
      },
      service: service,
      isMultiSelect: configuration.isMultiSelect,
      isStatic: configuration.isStatic,
      isItemSelectionRequired: configuration.isItemSelectionRequired,
      loadingItemsCount: configuration.loadingItemsCount,
      loadingItemHeight: configuration.loadingItemHeight,
    ),
  );
}