showItemPickerDialog<T> function

Future<T?> showItemPickerDialog<T>(
  1. BuildContext context, {
  2. required ItemChildDelegate<T> items,
  3. required ItemPickerBuilder<T> builder,
  4. ItemPickerLayout layout = const GridItemPickerLayout(),
  5. T? initialValue,
  6. BoxConstraints? constraints,
  7. required Widget title,
})

Implementation

Future<T?> showItemPickerDialog<T>(
  BuildContext context, {
  required ItemChildDelegate<T> items,
  required ItemPickerBuilder<T> builder,
  ItemPickerLayout layout = const GridItemPickerLayout(),
  T? initialValue,
  BoxConstraints? constraints,
  required Widget title,
}) {
  return showDialog<T>(
    context: context,
    builder: (context) {
      final theme = Theme.of(context);
      final padding = MediaQuery.paddingOf(context);
      return ModalBackdrop(
        borderRadius: theme.borderRadiusXl,
        child: ModalContainer(
          borderRadius: theme.borderRadiusXl,
          padding: EdgeInsets.zero,
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Padding(
                padding: EdgeInsets.all(16.0 * theme.scaling) +
                    EdgeInsets.only(top: padding.top),
                child: title,
              ),
              ConstrainedBox(
                constraints: constraints ??
                    BoxConstraints(
                      maxWidth: 320 * theme.scaling,
                      maxHeight: 320 * theme.scaling,
                    ),
                child: MediaQuery(
                  data: MediaQuery.of(context).copyWith(
                    padding: padding.copyWith(top: 0) +
                        const EdgeInsets.only(
                                bottom: 8.0, left: 8.0, right: 8.0) *
                            theme.scaling,
                  ),
                  child: ItemPickerDialog<T>(
                    items: items,
                    builder: builder,
                    layout: layout,
                    value: initialValue,
                    onChanged: (value) {
                      Navigator.of(context).pop(value);
                    },
                  ),
                ),
              )
            ],
          ),
        ),
      );
    },
  );
}