// import 'dart:io'; // // import 'package:flutter/material.dart'; // import 'package:flutter_sound/flutter_sound.dart'; // import 'package:get/get.dart'; // import 'package:permission_handler/permission_handler.dart'; // // import '../home/map_passenger_controller.dart'; // // class AudioController extends GetxController { // final recorder = FlutterSoundRecorder(); // bool isRecording = false; // // @override // void onInit() { // super.onInit(); // initRecorder(); // } // // Future initRecorder() async { // final status = await Permission.microphone.request(); // if (status != PermissionStatus.granted) { // if (status.isPermanentlyDenied) { // // Handle permission permanently denied // showPermissionDeniedDialog(); // } else if (status.isDenied) { // // Handle permission denied // showPermissionDeniedSnackbar(); // } else if (status.isRestricted) { // // Handle permission restricted // showPermissionDeniedSnackbar(); // } // return; // } // await recorder.openRecorder(); // recorder.setSubscriptionDuration(const Duration(minutes: 50)); // } // // Future startRecording() async { // if (!recorder.isStopped) { // await recorder.startRecorder(); // } // isRecording = true; // update(); // } // // Future stopRecording() async { // final filePath = await recorder.stopRecorder(); // final audioFile = File(filePath!); // print('Recorded file path: $audioFile'); // // Now you can send this file to the server // isRecording = false; // update(); // } // // @override // void onClose() { // recorder.stopRecorder(); // super.onClose(); // } // // void showPermissionDeniedDialog() { // showDialog( // context: Get.context!, // builder: (context) => AlertDialog( // title: const Text('Microphone Permission'), // content: // const Text('Microphone permission is required to record audio.'), // actions: [ // TextButton( // onPressed: () { // Navigator.of(context).pop(); // openAppSettings(); // }, // child: const Text('Open Settings'), // ), // TextButton( // onPressed: () { // Navigator.of(context).pop(); // }, // child: const Text('Cancel'), // ), // ], // ), // ); // } // // void showPermissionDeniedSnackbar() { // Get.snackbar( // 'Microphone Permission', // 'Microphone permission is required to record audio.', // snackPosition: SnackPosition.BOTTOM, // duration: const Duration(seconds: 5), // mainButton: TextButton( // onPressed: () { // openAppSettings(); // }, // child: const Text( // 'Open Settings', // style: TextStyle(color: Colors.white), // ), // ), // ); // } // } import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:flutter_sound/flutter_sound.dart'; import 'package:permission_handler/permission_handler.dart'; class AudioController extends GetxController { final flutterSoundHelper = FlutterSoundHelper(); bool isRecording = false; Future startRecording() async { if (!await flutterSoundHelper.hasPermissions()) { await flutterSoundHelper.requestPermissions(); } if (!await flutterSoundHelper.hasPermissions()) { return; } await flutterSoundHelper.startRecorder(); isRecording = true; } Future stopRecording() async { if (!isRecording) { return; } await flutterSoundHelper.stopRecorder(); isRecording = false; } } class FlutterSoundHelper { final flutterSound = FlutterSoundRecorder(); Future hasPermissions() async { return await Permission.microphone.isGranted; } Future requestPermissions() async { await Permission.microphone.request(); } Future startRecorder() async { await flutterSound.openRecorder(); await flutterSound.startRecorder(toFile: 'audio.wav'); } Future stopRecorder() async { await flutterSound.stopRecorder(); await flutterSound.closeRecorder(); } }