import 'package:cs_resources/generated/assets.dart'; import 'package:cs_resources/generated/l10n.dart'; import 'package:cs_resources/theme/app_colors_theme.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:widgets/ext/ex_widget.dart'; import 'package:widgets/my_load_image.dart'; import '../my_text_view.dart'; import 'dart:ui'; import 'package:flutter/cupertino.dart'; import 'package:flutter/widgets.dart'; import 'package:widgets/widget_export.dart'; import '../no_shadow_scroll_behavior.dart'; /* * 默认的弹窗 */ class AppCustomDialog extends StatelessWidget { String? title; String message; Widget Function(BuildContext context)? messageBuilder; VoidCallback confirmAction; VoidCallback? cancelAction; bool isShowCancelBtn; String? confirmTxt; String? cancelTxt; AppCustomDialog({ required this.message, required this.confirmAction, this.messageBuilder, this.title, this.cancelAction, this.isShowCancelBtn = true, this.confirmTxt, this.cancelTxt, }); @override Widget build(BuildContext context) { //使用一个 Column 为最外层容器,可以方便的视线 wrap_content 的效果 return Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.max, children: [ //Title (如果使用 Container 为最外层容器则默认为 match_parent 的效果,除非我们限制宽度和最大高度最小高度) Container( width: double.infinity, height: 55, decoration: BoxDecoration( color: context.appColors.btnBgDefault, borderRadius: const BorderRadius.only( topRight: Radius.circular(15), topLeft: Radius.circular(15), ), ), child: Row( children: [ const SizedBox(width: 45), MyTextView( title ?? S.current.alert, fontSize: 18, textAlign: TextAlign.center, isFontMedium: true, textColor: Colors.white, ).expanded(), const MyAssetImage(Assets.baseServiceDialogDeleteIcon,width: 25,height: 25.5,).onTap((){ onCancel(); },padding: 10) ], ), ), Container( width: double.infinity, padding: const EdgeInsets.only(top: 30), decoration: BoxDecoration( color: context.appColors.whiteSecondBG, borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(15), bottomRight: Radius.circular(15), ), ), child: Column( children: [ Scrollbar( child: ScrollConfiguration( behavior: NoShadowScrollBehavior(), child: SingleChildScrollView( child: message.isNotEmpty?MyTextView( message, fontSize: 18, textColor: context.appColors.textBlack, isFontRegular: true, textAlign: TextAlign.center, paddingLeft: 30, paddingRight: 30, ): (messageBuilder != null ? messageBuilder!(context) : Container()), ), ), ).constrained(maxHeight: 210), Row( children: [ const SizedBox(width: 18), Visibility( visible: isShowCancelBtn, child: Expanded( flex: 1, child: InkWell( onTap: () { onCancel(); cancelAction?.call(); }, child: MyTextView( cancelTxt ?? S.current.no, fontSize: 16, isFontMedium: true, paddingTop: 13, marginRight: 15, paddingBottom: 13, textAlign: TextAlign.center, textColor: Colors.white, backgroundColor: context.appColors.orangeBG, cornerRadius: 7, ), )), ), Expanded( flex: 1, child: InkWell( onTap: () async { onCancel(); confirmAction(); }, child: MyTextView( confirmTxt ?? S.current.yes, fontSize: 16, paddingTop: 13, paddingBottom: 13, isFontMedium: true, textAlign: TextAlign.center, textColor: Colors.white, backgroundColor: context.appColors.btnBgDefault, cornerRadius: 7, ), )), const SizedBox(width: 18), ], ).marginOnly(bottom: 30, top: 28), ], ), ), ], ).constrained(width: 300); } //取消弹框 void onCancel() async { SmartDialog.dismiss(); } }