|
- import 'package:flutter/material.dart';
- import 'package:flutter_svg/svg.dart';
- import '../../themes/app_dimension.dart';
-
- import '../../themes/app_colors.dart';
- import '../../themes/styles_text.dart';
-
- class DialogWidget extends StatelessWidget {
- final String icon;
- final Color? iconColor;
- final String title;
- final String message;
- final String confirmTitle;
- final String? cancelTitle;
- final String? otherTitle;
- final Widget? customWidget;
- final Function onPressedConfirm;
- final Function? onPressedCancel;
- final Function? onPressedOther;
- final Color? colorConfirmButton;
-
- const DialogWidget({
- Key? key,
- required this.icon,
- required this.title,
- required this.message,
- required this.confirmTitle,
- required this.onPressedConfirm,
- this.iconColor,
- this.customWidget,
- this.onPressedCancel,
- this.cancelTitle,
- this.onPressedOther,
- this.otherTitle,
- this.colorConfirmButton,
- }) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- return SingleChildScrollView(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- SizedBox(
- height: 35.h,
- ),
- SvgPicture.asset(icon, color: iconColor),
- SizedBox(
- height: 13.h,
- ),
- Padding(
- padding: EdgeInsets.only(left: 30.0.w, right: 30.0.w),
- child: Text(
- title,
- style: StylesText.header1,
- textAlign: TextAlign.center,
- ),
- ),
- const SizedBox(
- height: 10,
- ),
- Padding(
- padding: EdgeInsets.only(left: 30.0.w, right: 30.0.w),
- child: Text(
- message,
- style: StylesText.body3,
- textAlign: TextAlign.center,
- ),
- ),
- Container(
- padding: EdgeInsets.only(left: 30.w, right: 30.w, top: 16.h),
- child: customWidget ?? const SizedBox.shrink(),
- ),
- Padding(
- padding: EdgeInsets.only(left: 30.0.w, right: 30.w, top: customWidget != null ? 0 : 40.h, bottom: 10.h),
- child: SizedBox(
- height: 48.h,
- width: double.infinity.w,
- child: ElevatedButton(
- onPressed: () {
- onPressedConfirm();
- },
- style: ButtonStyle(
- backgroundColor: MaterialStateProperty.resolveWith(
- (states) {
- return colorConfirmButton ?? AppColors.primary1;
- },
- ),
- shadowColor: MaterialStateProperty.resolveWith(
- (states) {
- return Colors.transparent;
- },
- ),
- shape: MaterialStateProperty.all<RoundedRectangleBorder>(
- RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(0.0),
- ),
- ),
- ),
- child: Text(
- confirmTitle.toUpperCase(),
- style: StylesText.body5.copyWith(
- color: AppColors.white,
- ),
- ),
- ),
- ),
- ),
- cancelTitle != null
- ? Padding(
- padding: EdgeInsets.only(left: 30.0.w, right: 30.w, top: 0.h, bottom: 10.h),
- child: SizedBox(
- height: 48.h,
- width: double.infinity.w,
- child: ElevatedButton(
- onPressed: () {
- onPressedCancel!();
- },
- style: ButtonStyle(
- backgroundColor: MaterialStateProperty.resolveWith(
- (states) {
- return AppColors.white;
- },
- ),
- shadowColor: MaterialStateProperty.resolveWith(
- (states) {
- return Colors.transparent;
- },
- ),
- shape: MaterialStateProperty.all<RoundedRectangleBorder>(
- RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(0.0),
- side: BorderSide(
- color: AppColors.primary1,
- ),
- ),
- ),
- ),
- child: Text(
- cancelTitle!.toUpperCase(),
- style: StylesText.body5.copyWith(
- color: AppColors.neutral1,
- ),
- ),
- ),
- ),
- )
- : const SizedBox.shrink(),
- otherTitle != null
- ? Padding(
- padding: EdgeInsets.only(left: 30.0.w, right: 30.w, top: 0.h, bottom: 10.h),
- child: SizedBox(
- height: 48.h,
- width: double.infinity.w,
- child: ElevatedButton(
- onPressed: () {
- onPressedOther!();
- },
- style: ButtonStyle(
- backgroundColor: MaterialStateProperty.resolveWith(
- (states) {
- return AppColors.white;
- },
- ),
- shape: MaterialStateProperty.all<RoundedRectangleBorder>(
- RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(0.0),
- side: BorderSide(
- color: AppColors.primary1,
- ),
- ),
- ),
- ),
- child: Text(
- otherTitle!.toUpperCase(),
- style: StylesText.body5.copyWith(
- color: AppColors.neutral1,
- ),
- ),
- ),
- ),
- )
- : const SizedBox.shrink(),
- SizedBox(
- height: 40.h,
- )
- ],
- ),
- );
- }
- }
|