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/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) { ThemeController themeController = Get.find(); BlueteethBindController blueteethBindController = Get.find(); 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(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, 0), child: Text( '蓝牙绑定.双人版绑定标题'.tr, style: FlutterFlowTheme.of(context).bodyMedium.override( 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 = v; blueteethBindController.model.deviceIndex1 = !v; blueteethBindController.model.deviceIndex2 = !v; blueteethBindController.updateAll(); } }, ), // 主设备 _buildCheckboxRow( context, title: '蓝牙绑定.主设备'.tr + "asasasasasas(已被绑定)", value: () => blueteethBindController.model.deviceIndex1!, onChanged: (v) { if (!blueteethBindController.model.deviceIndex1!) { blueteethBindController.model.deviceIndex1 = v; blueteethBindController.model.deviceIndex0 = !v; blueteethBindController.model.deviceIndex2 = !v; blueteethBindController.updateAll(); } }, ), // 从设备 _buildCheckboxRow( context, title: '蓝牙绑定.从设备'.tr, value: () => blueteethBindController.model.deviceIndex2!, onChanged: (v) { if (!blueteethBindController.model.deviceIndex2!) { blueteethBindController.model.deviceIndex2 = v; blueteethBindController.model.deviceIndex0 = !v; blueteethBindController.model.deviceIndex1 = !v; blueteethBindController.updateAll(); } }, ), // 确定按钮 Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 100.rpx, 0, 0), child: _buildActionButton( context, text: '蓝牙绑定.确定'.tr, onTap: () { Get.back(); }, ), ), // 取消按钮 Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 19.rpx, 0, 60.rpx), child: _buildActionButton( context, text: '蓝牙绑定.取消'.tr, onTap: () { Get.back(); }, ), ), ], ), ), ), ); }, ); } void showHaveBindDialog(BuildContext context) { 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: themeController.currentColor.sc17, 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: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 70.rpx, 0.rpx, 56.rpx), child: RichText( text: TextSpan(children: [ TextSpan( text: "蓝牙绑定.无法绑定1".tr, style: TextStyle( color: themeController.currentColor.sc3, fontSize: AppConstants().normal_text_fontSize, ), ), TextSpan( text: "蓝牙绑定.无法绑定2".tr, style: TextStyle( color: themeController.currentColor.sc8, fontSize: AppConstants().normal_text_fontSize, ), ), TextSpan( text: "蓝牙绑定.无法绑定3".tr, style: TextStyle( color: themeController.currentColor.sc3, 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(); }, 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: FlutterFlowTheme.of(context) .bodyMedium .override( 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: FlutterFlowTheme.of(context).bodyMedium.override( // 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(20.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: Text( title, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: AppConstants().normal_text_fontSize, color: themeController.currentColor.sc3, ), ), ), ].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: [ 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( text, style: FlutterFlowTheme.of(context).bodyMedium.override( 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(); 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: FlutterFlowTheme.of(context).bodyMedium.override( 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: () async { Get.back(); onCancel(); }, colors: [ themeController.currentColor.sc1, themeController.currentColor.sc2, ], 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: FlutterFlowTheme.of(context) .bodyMedium .override( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox(width: 17.rpx)), ), ), ), 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.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: FlutterFlowTheme.of(context) .bodyMedium .override( 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: 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: [ // 标题 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(0, 33.rpx, 0, 0.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(0.rpx, 40.rpx, 0, 0), child: Text( title, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), ), ), ), widget, Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 58.rpx, 0, 60.rpx), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ CustomCard( borderRadius: AppConstants().button_container_radius, onTap: () { if (blueteethBindController.model.wifiPass == null || blueteethBindController.model.wifiPass!.isEmpty) { TopSlideNotification.show( context, text: "wifi页.密码为空".tr, textColor: themeController.currentColor.sc9, ); } else { onConfirm(); Get.back(); } }, colors: [ themeController.currentColor.sc1, themeController.currentColor.sc2, ], 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: FlutterFlowTheme.of(context) .bodyMedium .override( 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 showTipDialog( BuildContext context, Widget widget, // String title, ) { 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(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(0, 33.rpx, 0, 0.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( // 0.rpx, 93.rpx, 0, 74.rpx), // child: Text( // title, // style: FlutterFlowTheme.of(context).bodyMedium.override( // fontFamily: 'Inter', // fontSize: 30.rpx, // letterSpacing: 0.0, // color: themeController.currentColor.sc3, // ), // ), // ), // ), 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( borderRadius: AppConstants().button_container_radius, onTap: () { Get.back(); }, 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: FlutterFlowTheme.of(context) .bodyMedium .override( color: themeController.currentColor.sc3, fontFamily: 'Inter', fontSize: AppConstants().normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox( width: 17.rpx, )), ), ), ), ), ], ), ), ), ); }, ); }