import 'dart:convert'; import 'package:aku_new_community/constants/app_theme.dart'; import 'package:aku_new_community/ui/function_and_service/work_order/work_order_detail_page.dart'; import 'package:aku_new_community/widget/dialog/bee_custom_dialog.dart'; import 'package:aku_new_community/widget/others/user_tool.dart'; import 'package:common_utils/common_utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:aku_new_community/gen/assets.gen.dart'; import 'package:aku_new_community/pages/tab_navigator.dart'; import 'package:aku_new_community/utils/developer_util.dart'; import 'package:aku_new_community/utils/headers.dart'; import 'package:aku_new_community/utils/websocket/alarm_models/fire_model.dart'; import 'package:power_logger/power_logger.dart'; class FireDialog { static fireAlarm(String content) async { LoggerData.addData(content); var json = jsonDecode(content); var alarmModel = FireModel.fromJson(json); if (alarmModel.type == 6) { await await Get.dialog( BeeCustomDialog( actions: [ MaterialButton( onPressed: () { Get.back(); }, child: Text( '暂不理会', style: UserTool.myAppStyle.dialogActionButtonText! .copyWith(color: Colors.black.withOpacity(0.45)), ), ), MaterialButton( onPressed: () { Get.to(WorkOrderDetailPage( id: alarmModel.workOrderAlert!.workOrderId)); }, child: Text( '前往确认', style: UserTool.myAppStyle.dialogActionButtonText, ), ) ], content: Padding( padding: EdgeInsets.all(32.w), child: Text( '您有一单报事报修已完成,请立即确认', style: UserTool.myAppStyle.dialogContentText, )), ), barrierDismissible: false, ); } else { await Get.dialog( getDialog(alarmModel), barrierDismissible: false, ); } } static String getTitle(int type) { switch (type) { case 1: return '发现火灾!请立刻组织疏散人群!'; case 2: return '设备故障'; case 3: return '管家端APP报警'; case 4: return '消息通知'; case 5: return 'SOS紧急联系报警'; default: return ''; } } static Widget getDialog(FireModel alarmModel) { return CupertinoAlertDialog( title: getImage(alarmModel.type), content: Column( children: [ Text( getTitle(alarmModel.type), style: TextStyle(color: Colors.black, fontSize: 34.sp), ), 10.hb, Text( getContent(alarmModel), style: TextStyle(color: Colors.black, fontSize: 26.sp), textAlign: TextAlign.start, ), ], ), actions: [ CupertinoDialogAction( child: Text('确认'), onPressed: () => Get.back(), ), if (DeveloperUtil.dev) CupertinoDialogAction( child: Text('清除所有弹窗'), onPressed: () => Get.offAll(() => TabNavigator()), ), ], ); } static String getContent(FireModel alarmModel) { switch (alarmModel.type) { case 1: return '于${DateUtil.formatDateStr(alarmModel.fireAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)},' '${alarmModel.fireAlarm!.deviceName}附近出现了火灾报警,请各位业主、租户保持镇静,不要慌乱,有序开始撤离!'; case 2: return '于${DateUtil.formatDateStr(alarmModel.deviceAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)},' '小区内有设备${alarmModel.deviceAlarm!.deviceName}发生了报警,请物业负责人员尽快前往现场排查故障!'; case 3: return '注意:\n于${DateUtil.formatDateStr(alarmModel.oneButtonAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)}' ',${alarmModel.oneButtonAlarm!.roomName} ${alarmModel.oneButtonAlarm!.name}在管家端app上点击了"一键报警",请尽快联系他沟通情况。\n' '${alarmModel.oneButtonAlarm!.name}联系方式:${alarmModel.oneButtonAlarm!.tel}\n' '如未能联系到${alarmModel.oneButtonAlarm!.name}。可择情报警'; case 4: return '${DateUtil.formatDateStr(alarmModel.deviceAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)}\n\n${alarmModel.clientAlarm!.content}'; case 5: return '注意:\n\n有住户使用了SOS紧急联系报警,请及时上门或联系人员前往查看,设备号:${alarmModel.elderlyCareEquipmentReminder!.deviceNo}' '\n\n${alarmModel.elderlyCareEquipmentReminder!.content}'; default: return ''; } } static Widget getImage(int type) { switch (type) { case 1: return Image.asset( R.ASSETS_ICONS_FIRE_ALARM_PNG, width: 110.w, height: 110.w, fit: BoxFit.fitHeight, ); case 2: return Image.asset( R.ASSETS_ICONS_DEVICE_ALARM_PNG, width: 110.w, height: 110.w, fit: BoxFit.fitHeight, ); case 3: return Image.asset( R.ASSETS_ICONS_APP_ALARM_PNG, width: 110.w, height: 110.w, fit: BoxFit.fitHeight, ); case 4: return Image.asset( R.ASSETS_ICONS_APP_ALARM_PNG, width: 110.w, height: 110.w, fit: BoxFit.fitHeight, ); case 5: return Image.asset( Assets.icons.sos.path, width: 110.w, height: 110.w, fit: BoxFit.fitHeight, ); default: return SizedBox(width: 110.w, height: 110.w); } } }