buildUploadButton static method

Widget buildUploadButton({
  1. required BuildContext context,
  2. required SolidFileUploadConfig config,
  3. required SolidFileUploadState state,
  4. required VoidCallback? onPressed,
})

Builds the main upload button.

Implementation

static Widget buildUploadButton({
  required BuildContext context,
  required SolidFileUploadConfig config,
  required SolidFileUploadState state,
  required VoidCallback? onPressed,
}) {
  final uploadButton = ElevatedButton.icon(
    onPressed: state.uploadInProgress ? null : onPressed,
    icon: state.uploadInProgress
        ? const SizedBox(
            width: 16,
            height: 16,
            child: CircularProgressIndicator(strokeWidth: 2),
          )
        : const Icon(Icons.file_upload),
    label: Text(config.uploadButtonText),
    style: ElevatedButton.styleFrom(
      padding: const EdgeInsets.symmetric(vertical: 16),
      backgroundColor: Theme.of(context).colorScheme.primaryContainer,
      foregroundColor: Theme.of(context).colorScheme.onPrimaryContainer,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
    ),
  );

  if (config.uploadTooltip != null) {
    return MarkdownTooltip(
      message: config.uploadTooltip!,
      child: uploadButton,
    );
  }

  return uploadButton;
}