import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:sefer_driver/views/widgets/error_snakbar.dart'; import 'package:sefer_driver/views/widgets/my_textField.dart'; import 'package:sefer_driver/views/widgets/elevated_btn.dart'; // Checked import import 'package:flutter_font_icons/flutter_font_icons.dart'; import '../../../../constant/box_name.dart'; import '../../../../constant/colors.dart'; import '../../../../constant/style.dart'; import '../../../../controller/firebase/notification_service.dart'; import '../../../../controller/functions/launch.dart'; import '../../../../controller/home/captin/map_driver_controller.dart'; import '../../../../main.dart'; class SosConnect extends StatelessWidget { SosConnect({super.key}); @override Widget build(BuildContext context) { return GetBuilder( id: 'SosConnect', // Keep ID for updates builder: (controller) { bool showSos = controller.isRideStarted; if (!showSos) return const SizedBox(); return Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.white.withOpacity(0.95), borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.1), blurRadius: 10, offset: const Offset(0, 4), ), ], ), child: Column( mainAxisSize: MainAxisSize.min, children: [ // === SOS Button === _buildModernActionButton( icon: MaterialIcons.warning, color: Colors.white, bgColor: AppColor.redColor, tooltip: 'EMERGENCY SOS', isPulsing: true, onTap: () => _handleSosCall(controller), ), ], ), ); }, ); } Widget _buildModernActionButton({ required IconData icon, required Color color, required Color bgColor, required String tooltip, required VoidCallback onTap, bool isPulsing = false, }) { return Material( color: Colors.transparent, child: InkWell( onTap: onTap, borderRadius: BorderRadius.circular(12), child: Container( width: 48, height: 48, decoration: BoxDecoration( color: bgColor, borderRadius: BorderRadius.circular(12), boxShadow: isPulsing ? [ BoxShadow( color: bgColor.withOpacity(0.4), blurRadius: 12, spreadRadius: 2, ) ] : [], ), child: Icon(icon, color: color, size: 24), ), ), ); } // --- Logic Functions --- void _handleSosCall(MapDriverController mapDriverController) { if (box.read(BoxName.sosPhoneDriver) == null) { Get.defaultDialog( title: 'Emergency Contact'.tr, content: Column( children: [ Text('Please enter the emergency number.'.tr), Form( key: mapDriverController.formKey1, child: MyTextForm( controller: mapDriverController.sosEmergincyNumberCotroller, label: 'Phone Number'.tr, hint: '0923456789', type: TextInputType.phone, ), ), ], ), confirm: MyElevatedButton( title: 'Save & Call'.tr, onPressed: () { if (mapDriverController.formKey1.currentState!.validate()) { box.write(BoxName.sosPhoneDriver, mapDriverController.sosEmergincyNumberCotroller.text); Get.back(); launchCommunication( 'phone', box.read(BoxName.sosPhoneDriver), ''); } }, ), ); } else { launchCommunication('phone', box.read(BoxName.sosPhoneDriver), ''); } } }