getPresentationWidgetsCommonDialogTemplate function

String getPresentationWidgetsCommonDialogTemplate(
  1. String projectName
)

Implementation

String getPresentationWidgetsCommonDialogTemplate(String projectName) {
  return '''
import 'package:flutter/material.dart';
import '../../core/theme/app_colors.dart';
import '../../core/utils/responsive_size.dart';
import 'text_widget.dart';

class CommonDialog extends StatefulWidget {
  final Widget? title;
  final Widget? body;
  final List<Widget>? actions;
  final Widget? icon;
  final String? titleText;
  final String? message;
  final EdgeInsets? contentPadding;
  final Color? backgroundColor;

  const CommonDialog({
    super.key,
    this.title,
    this.body,
    this.actions,
    this.icon,
    this.titleText,
    this.message,
    this.contentPadding,
    this.backgroundColor,
  });

  /// 🔥 Static method to show dialog
  static Future<T?> show<T>(
      BuildContext context, {
        Widget? title,
        Widget? body,
        List<Widget>? actions,
        Widget? icon,
        String? titleText,
        String? message,
        EdgeInsets? contentPadding,
        bool barrierDismissible = true,
        Color? backgroundColor,
      }) {
    return showDialog<T>(
      context: context,
      barrierDismissible: barrierDismissible,
      builder: (_) => CommonDialog(
        title: title,
        body: body,
        actions: actions,
        icon: icon,
        titleText: titleText,
        message: message,
        contentPadding: contentPadding,
        backgroundColor: backgroundColor,
      ),
    );
  }

  @override
  State<CommonDialog> createState() => _CommonDialogState();
}

class _CommonDialogState extends State<CommonDialog> {

  bool isLoading = false; // ✅ example state (useful for buttons / API)

  @override
  void initState() {
    super.initState();

    // ✅ You can add logic here if needed
  }

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      backgroundColor: widget.backgroundColor ?? AppColors.white,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(16.sp),
      ),
      contentPadding: widget.contentPadding ?? EdgeInsets.all(10.sp),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        children: [

          /// 🔹 Icon
          if (widget.icon != null) ...[
            widget.icon!,
            SizedBox(height: 10.sp),
          ],

          /// 🔹 Title
          if (widget.title != null)
            widget.title!
          else if (widget.titleText != null)
            TextWidget(
              text: widget.titleText!,
              textSize: 20.sp,
              isTitle: true,
              fontWeight: FontWeight.w600,
            ),

          if (widget.title != null || widget.titleText != null)
            SizedBox(height: 10.sp),

          /// 🔹 Body
          if (widget.body != null)
            widget.body!
          else if (widget.message != null)
            TextWidget(
              text: widget.message!,
              textAlign: TextAlign.center,
              textSize: 14.sp,
            ),

          /// 🔹 Actions
          if (widget.actions != null) ...[
            SizedBox(height: 20.sp),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: widget.actions!,
            ),
          ],

          /// 🔹 Example Loader (optional)
          if (isLoading) ...[
            SizedBox(height: 20.sp),
            const CircularProgressIndicator(),
          ],
        ],
      ),
    );
  }
}''';
}