showItemPickerBottomSheet<T extends PickerItemModel> function
void
showItemPickerBottomSheet<T extends PickerItemModel>({
- required BuildContext context,
- required ItemPickerService<
T> service, - List<
T> ? selectedItems, - dynamic callback(
- List<
T>
- List<
- ItemPickerItemBuilder<
T> ? itemBuilder, - Widget errorBuilder()?,
- Widget emptyBuilder()?,
- Widget separatorBuilder(
- BuildContext context,
- int index
- String? title,
- ItemPickerConfiguration configuration = const ItemPickerConfiguration(),
- ItemPickerModalConfiguration modalConfiguration = const ItemPickerModalConfiguration(),
- 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,
),
);
}