getPresentationWidgetsCommonDialogTemplate function
String
getPresentationWidgetsCommonDialogTemplate(
- 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(),
],
],
),
);
}
}''';
}