webOrDesktopAttachmentPickerBuilder function

Widget webOrDesktopAttachmentPickerBuilder({
  1. required BuildContext context,
  2. required StreamAttachmentPickerController controller,
  3. Iterable<WebOrDesktopAttachmentPickerOption>? customOptions,
  4. ThumbnailSize attachmentThumbnailSize = const ThumbnailSize(400, 400),
  5. ThumbnailFormat attachmentThumbnailFormat = ThumbnailFormat.jpeg,
  6. int attachmentThumbnailQuality = 100,
  7. double attachmentThumbnailScale = 1,
})

Returns the web or desktop version of the attachment picker.

Implementation

Widget webOrDesktopAttachmentPickerBuilder({
  required BuildContext context,
  required StreamAttachmentPickerController controller,
  Iterable<WebOrDesktopAttachmentPickerOption>? customOptions,
  ThumbnailSize attachmentThumbnailSize = const ThumbnailSize(400, 400),
  ThumbnailFormat attachmentThumbnailFormat = ThumbnailFormat.jpeg,
  int attachmentThumbnailQuality = 100,
  double attachmentThumbnailScale = 1,
}) {
  return StreamWebOrDesktopAttachmentPickerBottomSheet(
    controller: controller,
    options: {
      if (customOptions != null) ...customOptions,
      WebOrDesktopAttachmentPickerOption(
        key: 'image-picker',
        type: AttachmentPickerType.images,
        icon: StreamSvgIcon.pictures(size: 36).toIconThemeSvgIcon(),
        title: 'Upload a photo',
      ),
      WebOrDesktopAttachmentPickerOption(
        key: 'video-picker',
        type: AttachmentPickerType.videos,
        icon: StreamSvgIcon.record(size: 36).toIconThemeSvgIcon(),
        title: 'Upload a video',
      ),
      WebOrDesktopAttachmentPickerOption(
        key: 'file-picker',
        type: AttachmentPickerType.files,
        icon: StreamSvgIcon.files(size: 36).toIconThemeSvgIcon(),
        title: 'Upload a file',
      ),
    },
    onOptionTap: (context, controller, option) async {
      final attachment = await StreamAttachmentHandler.instance.pickFile(
        type: option.type.fileType,
      );
      if (attachment != null) {
        await controller.addAttachment(attachment);
      }
      return Navigator.pop(context, controller.value);
    },
  );
}