import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:loading_indicator/loading_indicator.dart'; import 'package:vbvs_app/common/color/appConstants.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/FrostedDialog.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart'; import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; import 'package:vbvs_app/model/BleDeviceData.dart'; import 'package:vbvs_app/pages/device_bind/componnet/FancyCircleCheckbox.dart'; void showBindDoubleDialog( BuildContext context, List devices, { required void Function(int selectedIndex) onConfirm, required VoidCallback onCancel, }) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); // 初始化默认选中 deviceIndex0 为 true blueteethBindController.model.deviceIndex0 = true; blueteethBindController.model.deviceIndex1 = false; blueteethBindController.model.deviceIndex2 = false; showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: themeController.currentColor.sc17, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(0.rpx, 0, 0.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ // 标题 Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.rpx, 93.rpx, 0, 0), child: Text( '蓝牙绑定.双人版绑定标题'.tr, style: TextStyle( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), ), ), ), // 全选 _buildCheckboxRow( context, title: '蓝牙绑定.绑定全部'.tr, value: () => blueteethBindController.model.deviceIndex0!, onChanged: (v) { if (!blueteethBindController.model.deviceIndex0!) { blueteethBindController.model.deviceIndex0 = true; blueteethBindController.model.deviceIndex1 = false; blueteethBindController.model.deviceIndex2 = false; blueteethBindController.updateAll(); } }, ), // 主设备 _buildCheckboxRow( context, title: '蓝牙绑定.主设备'.tr + "${devices[0].mac}" + (devices[0].bind == false ? "可绑定".tr : "已被绑定".tr), value: () => blueteethBindController.model.deviceIndex1!, onChanged: (v) { if (!blueteethBindController.model.deviceIndex1!) { blueteethBindController.model.deviceIndex0 = false; blueteethBindController.model.deviceIndex1 = true; blueteethBindController.model.deviceIndex2 = false; blueteethBindController.updateAll(); } }, ), // 从设备 _buildCheckboxRow( context, title: '蓝牙绑定.从设备'.tr + "${devices[1].mac}" + (devices[1].bind == false ? "可绑定".tr : "已被绑定".tr), value: () => blueteethBindController.model.deviceIndex2!, onChanged: (v) { if (!blueteethBindController.model.deviceIndex2!) { blueteethBindController.model.deviceIndex0 = false; blueteethBindController.model.deviceIndex1 = false; blueteethBindController.model.deviceIndex2 = true; blueteethBindController.updateAll(); } }, ), // 确定按钮 Padding( padding: EdgeInsetsDirectional.fromSTEB( 60.rpx, 100.rpx, 60.rpx, 0), child: _buildActionButton( context, text: '蓝牙绑定.确定'.tr, onTap: () { Get.back(); int selectedIndex = blueteethBindController.model.deviceIndex0! ? 0 : (blueteethBindController.model.deviceIndex1! ? 1 : 2); onConfirm(selectedIndex); }, ), ), // 取消按钮 Padding( padding: EdgeInsetsDirectional.fromSTEB( 60.rpx, 19.rpx, 60.rpx, 60.rpx), child: _buildActionButton( context, text: '蓝牙绑定.取消'.tr, onTap: () { Get.back(); onCancel(); }, ), ), ], ), ), ), ); }, ); } Future showUnBindDeviceDialog(BuildContext context) async {} Future showHaveBindDialog(BuildContext context) async { ThemeController themeController = Get.find(); return showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(60.rpx, 0, 60.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 93.rpx, 0.rpx, 0.rpx), child: Text( '无法绑定'.tr, style: TextStyle( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: stringToColor("#333333"), ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 70.rpx, 0.rpx, 56.rpx), child: RichText( text: TextSpan(children: [ TextSpan( text: "无法绑定1".tr, style: TextStyle( color: stringToColor("#333333"), fontSize: AppConstants().normal_text_fontSize, ), ), TextSpan( text: "无法绑定2".tr, style: TextStyle( color: stringToColor("#333333"), fontSize: AppConstants().normal_text_fontSize, ), ), TextSpan( text: "无法绑定3".tr, style: TextStyle( color: stringToColor("#333333"), fontSize: AppConstants().normal_text_fontSize, ), ), ]), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 19.rpx, 0, 60.rpx), child: CustomCard( borderRadius: AppConstants().button_container_radius, onTap: () { Get.back(result: true); }, colors: [ themeController.currentColor.sc1, themeController.currentColor.sc2, ], child: Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '知道了'.tr, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox( width: 17.rpx, )), ), ), ), ), ], ), ), ), ); }, ); } void showLoadingDialog(BuildContext context, {String? title}) { ThemeController themeController = Get.find(); showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: Colors.transparent, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(60.rpx, 0, 60.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ // Align( // alignment: AlignmentDirectional(0, 0), // child: Padding( // padding: EdgeInsetsDirectional.fromSTEB( // 0.rpx, 93.rpx, 0.rpx, 0.rpx), // child: Text( // '蓝牙绑定.无法绑定'.tr, // style: TextStyle( // fontFamily: 'Inter', // fontSize: 30.rpx, // letterSpacing: 0.0, // color: themeController.currentColor.sc3, // ), // ), // ), // ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 93.rpx, 0.rpx, 0.rpx), child: SizedBox( width: 120.rpx, height: 120.rpx, child: LoadingIndicator( indicatorType: Indicator.ballSpinFadeLoader, colors: [ themeController.currentColor.sc3, ], strokeWidth: 1, backgroundColor: Colors.transparent, pathBackgroundColor: themeController.currentColor.sc3), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 27.rpx, 0.rpx, 56.rpx), child: RichText( text: TextSpan(children: [ TextSpan( text: title ?? "连接中...".tr, style: TextStyle( color: themeController.currentColor.sc3, fontSize: AppConstants().normal_text_fontSize, ), ), ]), ), ), ], ), ), ), ); }, ); } Widget _buildCheckboxRow( BuildContext context, { required String title, required bool Function() value, required void Function(bool) onChanged, }) { ThemeController themeController = Get.find(); return Padding( padding: EdgeInsetsDirectional.fromSTEB(60.rpx, 64.rpx, 0.rpx, 0.rpx), child: Row( mainAxisSize: MainAxisSize.max, children: [ Obx(() => FancyCircleCheckbox( borderColor: themeController.currentColor.sc3, fillColor: themeController.currentColor.sc2, value: value(), onChanged: onChanged, )), Expanded( child: Builder( builder: (_) { final bool isBindable = title.contains('可绑定'.tr); final bool isBound = title.contains('已被绑定'.tr); // 提取主文本部分 final String mainText = title.replaceAll('可绑定'.tr, '').replaceAll('已被绑定'.tr, ''); return RichText( text: TextSpan( children: [ TextSpan( text: mainText, style: TextStyle( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: AppConstants().normal_text_fontSize, color: themeController.currentColor.sc3, ), ), if (isBindable) TextSpan( text: "(" + '可绑定'.tr + ")", style: TextStyle( fontSize: AppConstants().normal_text_fontSize, color: themeController.currentColor.sc1, ), ), if (isBound) TextSpan( text: "(" + '已被绑定'.tr + ")", style: TextStyle( fontSize: AppConstants().normal_text_fontSize, color: themeController.currentColor.sc9, ), ), ], ), ); }, ), ), ].divide(SizedBox(width: 21.rpx)), ), ); } Widget _buildActionButton( BuildContext context, { required String text, required VoidCallback onTap, }) { ThemeController themeController = Get.find(); return CustomCard( borderRadius: AppConstants().button_container_radius, onTap: onTap, colors: '蓝牙绑定.确定'.tr == text ? [ themeController.currentColor.sc1, themeController.currentColor.sc2, ] : [Colors.transparent], child: Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), decoration: '蓝牙绑定.确定'.tr == text ? BoxDecoration() : BoxDecoration( border: Border.all( color: themeController.currentColor.sc3, // 你可以换成指定颜色 width: 1.0.rpx, ), borderRadius: BorderRadius.circular(50.rpx), // 可选:加圆角 ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( text, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ); } void showConfirmDialog( BuildContext context, Widget widget, String title, { required VoidCallback onConfirm, required VoidCallback onCancel, }) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); try { showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), // 背景模糊色 builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(31.rpx, 0, 31.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ // 标题 // Row( // mainAxisAlignment: MainAxisAlignment.end, // children: [ // ClickableContainer( // backgroundColor: Colors.transparent, // 容器背景色 // highlightColor: // themeController.currentColor.sc21, // 点击时的背景色 // padding: EdgeInsets.zero, // 这里去掉外部的 padding,避免影响点击范围 // onTap: () { // Get.back(); // onCancel(); // }, // child: Padding( // // padding: // // EdgeInsetsDirectional.fromSTEB(0, 33.rpx, 0, 0.rpx), // padding: EdgeInsetsDirectional.fromSTEB( // 33.rpx, 33.rpx, 33.rpx, 33.rpx), // child: SvgPicture.asset( // 'assets/img/icon/close.svg', // width: 25.rpx, // height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 // color: themeController.currentColor.sc3, // ), // ), // ), // ], // ), Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 60.rpx, 33.rpx, 33.rpx), child: Text( title, style: TextStyle( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: stringToColor("#333333"), fontWeight: FontWeight.w600, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 0.rpx, 33.rpx, 0.rpx), child: widget, ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 58.rpx, 33.rpx, 60.rpx), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ CustomCard( borderRadius: AppConstants().normal_container_radius, onTap: () async { Get.back(); onCancel(); }, colors: [ stringToColor("1592AA"), stringToColor("006FA3"), ], child: Container( width: MediaQuery.sizeOf(context).width * 0.115, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 160.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( "否".tr, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), CustomCard( borderRadius: AppConstants().normal_container_radius, onTap: () { Get.back(); onConfirm(); // await Future.delayed(Duration(milliseconds: 300)); }, colors: [ stringToColor("1592AA"), stringToColor("006FA3"), ], child: Container( width: MediaQuery.sizeOf(context).width * 0.215, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 160.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( "是".tr, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), ].divide(SizedBox( width: 70.rpx, )), ), ), ], ), ), ), ); }, ); } catch (e) { print(e); } } void showSingleConfirmDialog( BuildContext context, Widget widget, String title, { required VoidCallback onConfirm, required VoidCallback onCancel, String confirmText = "确定", }) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), // 背景模糊色 builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: themeController.currentColor.sc17, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(31.rpx, 0, 31.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ // 标题 Row( mainAxisAlignment: MainAxisAlignment.end, children: [ ClickableContainer( backgroundColor: Colors.transparent, // 容器背景色 highlightColor: themeController.currentColor.sc21, // 点击时的背景色 padding: EdgeInsets.zero, // 这里去掉外部的 padding,避免影响点击范围 onTap: () { Get.back(); onCancel(); }, child: Padding( // padding: // EdgeInsetsDirectional.fromSTEB(0, 33.rpx, 0, 0.rpx), padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 33.rpx, 33.rpx, 33.rpx), child: SvgPicture.asset( 'assets/img/icon/close.svg', width: 25.rpx, height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 color: themeController.currentColor.sc3, ), ), ), ], ), Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 60.rpx, 33.rpx, 33.rpx), child: Text( title, style: TextStyle( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 0.rpx, 33.rpx, 0.rpx), child: widget, ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 33.rpx, 58.rpx, 33.rpx, 60.rpx), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ CustomCard( borderRadius: AppConstants().button_container_radius, onTap: () { Get.back(); onConfirm(); // await Future.delayed(Duration(milliseconds: 300)); }, colors: [ themeController.currentColor.sc1, themeController.currentColor.sc2, ], child: Container( width: MediaQuery.sizeOf(context).width * 0.43, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 160.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( confirmText, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), ].divide(SizedBox( width: 70.rpx, )), ), ), ], ), ), ), ); }, ); } void showWifiDialog( BuildContext context, Widget widget, String title, { required VoidCallback onConfirm, }) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), // 背景模糊色 builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(64.rpx, 0, 64.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ // 标题 Row( mainAxisAlignment: MainAxisAlignment.end, children: [ ClickableContainer( backgroundColor: Colors.transparent, // 容器背景色 highlightColor: themeController.currentColor.sc21, // 点击时的背景色 padding: EdgeInsets.zero, // 这里去掉外部的 padding,避免影响点击范围 onTap: () { Get.back(); }, child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 20.rpx, 33.rpx, 20.rpx, 20.rpx), child: SvgPicture.asset( 'assets/img/icon/close.svg', width: 25.rpx, height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 color: stringToColor("#878787"), ), ), ), ], ), Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.rpx, 20.rpx, 0, 0), child: Text( title, style: TextStyle( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: stringToColor("#333333"), ), ), ), ), widget, Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 58.rpx, 0, 60.rpx), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ CustomCard( borderRadius: AppConstants().normal_container_radius, onTap: () { if (blueteethBindController.model.wifiPass == null || blueteethBindController.model.wifiPass!.isEmpty) { TopSlideNotification.show( context, text: "密码为空".tr, textColor: themeController.currentColor.sc9, ); } else { onConfirm(); Get.back(); } }, colors: AppConstants().mhtNormalButton, gradientDirection: GradientDirection.vertical, child: Container( width: MediaQuery.sizeOf(context).width * 0.115, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 160.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( "连接".tr, style: TextStyle( color: Colors.white, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), ].divide(SizedBox( width: 70.rpx, )), ), ), ], ), ), ), ); }, ); } Future showTipDialog( BuildContext context, Widget widget, { Color? backgroundColor, }) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); return showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: backgroundColor ?? Colors.white, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(64.rpx, 0, 64.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 93.rpx, 0, 74.rpx), child: widget, ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 19.rpx, 0, 60.rpx), child: CustomCard( gradientDirection: GradientDirection.vertical, borderRadius: AppConstants().button_container_radius, onTap: () { Get.back(); // 关闭对话框 }, colors: [ stringToColor("FCFCFC"), stringToColor("CEECE3"), ], child: Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '知道了'.tr, style: TextStyle( color: stringToColor("#333333"), fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), ), ], ), ), ), ); }, ); } Future showUnBindTipDialog( BuildContext context, Widget widget, { Color? backgroundColor, VoidCallback? onConfirm, // “继续”按钮回调 VoidCallback? onCancel, // “下次再说”按钮回调 }) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); return showDialog( context: context, barrierDismissible: true, barrierColor: Colors.black.withOpacity(0.5), builder: (BuildContext context) { return FrostedDialog( blurSigma: 3.0, child: Container( decoration: BoxDecoration( color: backgroundColor ?? themeController.currentColor.sc17, borderRadius: BorderRadius.circular(20.0), ), padding: EdgeInsetsDirectional.fromSTEB(64.rpx, 0, 64.rpx, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxHeight: MediaQuery.sizeOf(context).height * 0.656, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 93.rpx, 0, 30.rpx), child: widget, ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 0.rpx, 0, 10.rpx), child: CustomCard( borderRadius: AppConstants().button_container_radius, onTap: () { Get.back(); // 关闭对话框 if (onConfirm != null) { onConfirm(); // 调用确认回调 } }, colors: [ themeController.currentColor.sc1, themeController.currentColor.sc2, ], child: Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '继续'.tr, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 19.rpx, 0, 60.rpx), child: CustomCard( borderRadius: AppConstants().button_container_radius, onTap: () { Get.back(); // 关闭对话框 if (onCancel != null) { onCancel(); // 调用取消回调 } }, colors: [Colors.transparent], child: Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height * 0.055, decoration: BoxDecoration( border: Border.all( color: Colors.white, width: 0.5.rpx, ), borderRadius: BorderRadius.circular( AppConstants().button_container_radius), ), constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '下次再说'.tr, style: TextStyle( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), ), ], ), ), ), ); }, ); }