generatePrimaryButton static method

String generatePrimaryButton()

Implementation

static String generatePrimaryButton() {
  return '''
import 'package:flutter/material.dart';

class PrimaryButton extends StatelessWidget {
final String text;
final VoidCallback? onPressed;
final bool isLoading;
final IconData? icon;
final double? width;
final double height;
final bool isFullWidth;

const PrimaryButton({
  Key? key,
  required this.text,
  this.onPressed,
  this.isLoading = false,
  this.icon,
  this.width,
  this.height = 56,
  this.isFullWidth = false,
}) : super(key: key);

@override
Widget build(BuildContext context) {
  final theme = Theme.of(context);

  return SizedBox(
    width: isFullWidth ? double.infinity : width,
    height: height,
    child: ElevatedButton(
      onPressed: isLoading ? null : onPressed,
      style: ElevatedButton.styleFrom(
        elevation: 0,
        shadowColor: Colors.transparent,
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(16),
        ),
        padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
      ),
      child: isLoading
          ? SizedBox(
              height: 24,
              width: 24,
              child: CircularProgressIndicator(
                strokeWidth: 2.5,
                valueColor: AlwaysStoppedAnimation<Color>(
                  theme.colorScheme.onPrimary,
                ),
              ),
            )
          : Row(
              mainAxisSize: MainAxisSize.min,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                if (icon != null) ...[
                  Icon(icon, size: 20),
                  const SizedBox(width: 8),
                ],
                Text(
                  text,
                  style: const TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.w600,
                    letterSpacing: 0.5,
                  ),
                ),
              ],
            ),
    ),
  );
}
}
''';
}