import 'package:ef/ef.dart'; import 'package:flutter/material.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/CustomCard.dart'; import 'package:vbvs_app/component/tool/FrostedDialog.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) { 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: "连接中...".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(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, 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: () { Get.back(); onConfirm(); }, 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(); onCancel(); }, 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, )), ), ), ], ), ), ), ); }, ); }