builder method

Implementation

@override
Widget builder(BuildContext context, theme) {
  return FeedbackWidget(
    onTap: onTap,
    isEnabled: onTap != null,
    child: ClipRRect(
      borderRadius: theme.borderRadius ?? BorderRadius.zero,
      child: Stack(
        children: [
          Builder(
            builder: (context) {
              if (_isPdf) {
                return FilePickerPreviewPdfWidget(
                  file: file,
                  fit: theme.fit ?? BoxFit.cover,
                  aspectRatio: theme.aspectRatio ?? 1,
                  errorBuilder: (_, file) => FilePickerPrevieErrorWidget(file),
                );
              }

              if (file.file != null) {
                return FilePickerPreviewFileWidget(
                  file: file,
                  aspectRatio: theme.aspectRatio ?? 1,
                  fit: theme.fit ?? BoxFit.cover,
                  errorBuilder: (_, file) => FilePickerPrevieErrorWidget(file),
                );
              }

              return ImageWidget.aspect(
                file.id,
                margin: .zero,
                aspectRatio: theme.aspectRatio ?? 1,
                fit: theme.fit ?? BoxFit.cover,
                errorWidget: FilePickerPrevieErrorWidget(file),
              );
            },
          ),

          Positioned(
            bottom: actionPadding.bottom,
            right: actionPadding.right,
            child: Builder(
              builder: (context) {
                if (file.isLoading) {
                  return LoadingWidget(
                    theme: theme.loadingThemeData,
                    margin: loadingMargin,
                  );
                }

                if (actionBuilder != null) {
                  return actionBuilder!.call(file);
                }

                return const SizedBox.shrink();
              },
            ),
          ),
        ],
      ),
    ),
  );
}