4/9/3
This commit is contained in:
@@ -86,10 +86,6 @@ PODS:
|
||||
- Flutter
|
||||
- flutter_secure_storage (6.0.0):
|
||||
- Flutter
|
||||
- flutter_sound (9.2.13):
|
||||
- Flutter
|
||||
- flutter_sound_core (= 9.2.13)
|
||||
- flutter_sound_core (9.2.13)
|
||||
- flutter_tts (0.0.1):
|
||||
- Flutter
|
||||
- FMDB (2.7.9):
|
||||
@@ -282,7 +278,6 @@ DEPENDENCIES:
|
||||
- Flutter (from `Flutter`)
|
||||
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
||||
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
||||
- flutter_sound (from `.symlinks/plugins/flutter_sound/ios`)
|
||||
- flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
|
||||
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
|
||||
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
||||
@@ -316,7 +311,6 @@ SPEC REPOS:
|
||||
- FirebaseCoreInternal
|
||||
- FirebaseInstallations
|
||||
- FirebaseMessaging
|
||||
- flutter_sound_core
|
||||
- FMDB
|
||||
- GoogleDataTransport
|
||||
- GoogleMaps
|
||||
@@ -365,8 +359,6 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/flutter_local_notifications/ios"
|
||||
flutter_secure_storage:
|
||||
:path: ".symlinks/plugins/flutter_secure_storage/ios"
|
||||
flutter_sound:
|
||||
:path: ".symlinks/plugins/flutter_sound/ios"
|
||||
flutter_tts:
|
||||
:path: ".symlinks/plugins/flutter_tts/ios"
|
||||
geolocator_apple:
|
||||
@@ -431,8 +423,6 @@ SPEC CHECKSUMS:
|
||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||
flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
|
||||
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
||||
flutter_sound: c60effa2a350fb977885f0db2fbc4c1ad5160900
|
||||
flutter_sound_core: 26c10e5832e76aaacfae252d8925232281c486ae
|
||||
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
|
||||
FMDB: aa44149f6fb634b1ac54f64f47064bb0d0c5a032
|
||||
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:SEFER/controller/home/captin/home_captain_controller.dart';
|
||||
import 'package:SEFER/controller/home/captin/map_driver_controller.dart';
|
||||
import 'package:SEFER/views/home/Captin/home_captain/widget/call_page.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -200,18 +201,41 @@ class FirebaseMessagesController extends GetxController {
|
||||
});
|
||||
}
|
||||
} else if (message.notification!.title! == 'Call Income') {
|
||||
var myListString = message.data['passengerList'];
|
||||
var driverList = jsonDecode(myListString) as List<dynamic>;
|
||||
NotificationController().showNotification(
|
||||
'Call Income'.tr,
|
||||
message.notification!.body!,
|
||||
'order',
|
||||
);
|
||||
Get.to(() => PassengerCallPage(
|
||||
channelName: driverList[1].toString(),
|
||||
token: driverList[0].toString(),
|
||||
remoteID: driverList[2].toString(),
|
||||
));
|
||||
try {
|
||||
var myListString = message.data['passengerList'];
|
||||
var driverList = jsonDecode(myListString) as List<dynamic>;
|
||||
if (Platform.isAndroid) {
|
||||
NotificationController().showNotification(
|
||||
'Call Income'.tr,
|
||||
message.notification!.body!,
|
||||
'order',
|
||||
);
|
||||
}
|
||||
// Assuming GetMaterialApp is initialized and context is valid for navigation
|
||||
Get.to(() => PassengerCallPage(
|
||||
channelName: driverList[1].toString(),
|
||||
token: driverList[0].toString(),
|
||||
remoteID: driverList[2].toString(),
|
||||
));
|
||||
} catch (e) {
|
||||
print('Error navigating to PassengerCallPage: $e');
|
||||
}
|
||||
} else if (message.notification!.title! == 'Call End') {
|
||||
try {
|
||||
var myListString = message.data['passengerList'];
|
||||
var driverList = jsonDecode(myListString) as List<dynamic>;
|
||||
if (Platform.isAndroid) {
|
||||
NotificationController().showNotification(
|
||||
'Call End'.tr,
|
||||
message.notification!.body!,
|
||||
'order',
|
||||
);
|
||||
}
|
||||
// Assuming GetMaterialApp is initialized and context is valid for navigation
|
||||
Get.off(const CallPage());
|
||||
} catch (e) {
|
||||
print('Error navigating to PassengerCallPage: $e');
|
||||
}
|
||||
} else if (message.notification!.title! == 'Driver Cancel Your Trip') {
|
||||
// Get.snackbar(
|
||||
// 'You will be pay the cost to driver or we will get it from you on next trip'
|
||||
|
||||
@@ -1,159 +1,160 @@
|
||||
// // 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<void> 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<void> startRecording() async {
|
||||
// // if (!recorder.isStopped) {
|
||||
// // await recorder.startRecorder();
|
||||
// // }
|
||||
// // isRecording = true;
|
||||
// // update();
|
||||
// // }
|
||||
// //
|
||||
// // Future<void> 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 'dart:io';
|
||||
//
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:flutter_sound/flutter_sound.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();
|
||||
// import '../home/map_passenger_controller.dart';
|
||||
//
|
||||
// class AudioController extends GetxController {
|
||||
// final recorder = FlutterSoundRecorder();
|
||||
// bool isRecording = false;
|
||||
//
|
||||
// Future<void> startRecording() async {
|
||||
// if (!await flutterSoundHelper.hasPermissions()) {
|
||||
// await flutterSoundHelper.requestPermissions();
|
||||
// }
|
||||
// @override
|
||||
// void onInit() {
|
||||
// super.onInit();
|
||||
// initRecorder();
|
||||
// }
|
||||
//
|
||||
// if (!await flutterSoundHelper.hasPermissions()) {
|
||||
// Future<void> 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));
|
||||
// }
|
||||
//
|
||||
// await flutterSoundHelper.startRecorder();
|
||||
// Future<void> startRecording() async {
|
||||
// if (!recorder.isStopped) {
|
||||
// await recorder.startRecorder();
|
||||
// }
|
||||
// isRecording = true;
|
||||
// update();
|
||||
// }
|
||||
//
|
||||
// Future<void> stopRecording() async {
|
||||
// if (!isRecording) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// await flutterSoundHelper.stopRecorder();
|
||||
// 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),
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// class FlutterSoundHelper {
|
||||
// final flutterSound = FlutterSoundRecorder();
|
||||
//
|
||||
// Future<bool> hasPermissions() async {
|
||||
// return await Permission.microphone.isGranted;
|
||||
// }
|
||||
//
|
||||
// Future<void> requestPermissions() async {
|
||||
// await Permission.microphone.request();
|
||||
// }
|
||||
//
|
||||
// Future<void> startRecorder() async {
|
||||
// await flutterSound.openRecorder();
|
||||
// await flutterSound.startRecorder(toFile: 'audio.wav');
|
||||
// }
|
||||
//
|
||||
// Future<void> stopRecorder() async {
|
||||
// await flutterSound.stopRecorder();
|
||||
// await flutterSound.closeRecorder();
|
||||
// }
|
||||
// }
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_sound/flutter_sound.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<void> startRecording() async {
|
||||
if (!await flutterSoundHelper.hasPermissions()) {
|
||||
await flutterSoundHelper.requestPermissions();
|
||||
}
|
||||
|
||||
if (!await flutterSoundHelper.hasPermissions()) {
|
||||
return;
|
||||
}
|
||||
|
||||
await flutterSoundHelper.startRecorder();
|
||||
isRecording = true;
|
||||
}
|
||||
|
||||
Future<void> stopRecording() async {
|
||||
if (!isRecording) {
|
||||
return;
|
||||
}
|
||||
|
||||
await flutterSoundHelper.stopRecorder();
|
||||
isRecording = false;
|
||||
}
|
||||
}
|
||||
|
||||
class FlutterSoundHelper {
|
||||
final flutterSound = FlutterSoundRecorder();
|
||||
|
||||
Future<bool> hasPermissions() async {
|
||||
return await Permission.microphone.isGranted;
|
||||
}
|
||||
|
||||
Future<void> requestPermissions() async {
|
||||
await Permission.microphone.request();
|
||||
}
|
||||
|
||||
Future<void> startRecorder() async {
|
||||
await flutterSound.openRecorder();
|
||||
await flutterSound.startRecorder(toFile: 'audio.wav');
|
||||
}
|
||||
|
||||
Future<void> stopRecorder() async {
|
||||
await flutterSound.stopRecorder();
|
||||
await flutterSound.closeRecorder();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -935,7 +935,7 @@ class MapPassengerController extends GetxController {
|
||||
box.read(BoxName.carType),
|
||||
kazan.toStringAsFixed(0),
|
||||
passengerRate.toStringAsFixed(2),
|
||||
];
|
||||
]; //
|
||||
print(body);
|
||||
FirebaseMessagesController().sendNotificationToDriverMAP(
|
||||
'Order',
|
||||
|
||||
@@ -25,7 +25,7 @@ class CallController extends GetxController {
|
||||
channelName = Get.find<MapDriverController>().rideId; // 'sefer300'; //
|
||||
remoteUid = int.parse(Get.find<MapDriverController>().passengerPhone);
|
||||
uid = int.parse(box.read(BoxName.phoneDriver));
|
||||
// initAgoraFull();
|
||||
initAgoraFull();
|
||||
}
|
||||
|
||||
initAgoraFull() async {
|
||||
@@ -36,7 +36,7 @@ class CallController extends GetxController {
|
||||
setupVoiceSDKEngine();
|
||||
join();
|
||||
FirebaseMessagesController().sendNotificationToPassengerToken(
|
||||
'Call Income'.tr,
|
||||
'Call Income',
|
||||
'${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}',
|
||||
Get.find<MapDriverController>().tokenPassenger,
|
||||
[
|
||||
|
||||
@@ -70,8 +70,8 @@ GetBuilder<HomeCaptainController> callPage() {
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
FirebaseMessagesController().sendNotificationToPassengerToken(
|
||||
'Call End'.tr,
|
||||
'Call End',
|
||||
'Call End'.tr,
|
||||
Get.find<MapDriverController>().tokenPassenger,
|
||||
[],
|
||||
);
|
||||
|
||||
@@ -19,7 +19,7 @@ class RideBeginPassenger extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ProfileController profileController = Get.put(ProfileController());
|
||||
// AudioController audioController = Get.put(AudioController());
|
||||
AudioController audioController = Get.put(AudioController());
|
||||
return GetBuilder<MapPassengerController>(builder: (controller) {
|
||||
if (controller.rideTimerBegin ||
|
||||
controller.statusRide == 'Begin' && !controller.statusRideFromStart) {
|
||||
@@ -82,29 +82,29 @@ class RideBeginPassenger extends StatelessWidget {
|
||||
),
|
||||
tooltip: ' Add Note', // Optional tooltip for clarity
|
||||
),
|
||||
// audioController.isRecording == false
|
||||
// ? IconButton(
|
||||
// onPressed: () async {
|
||||
// await audioController.startRecording();
|
||||
// },
|
||||
// icon: const Icon(
|
||||
// Icons.play_circle_fill_outlined,
|
||||
// color: AppColor.greenColor,
|
||||
// ),
|
||||
// tooltip:
|
||||
// ' Add Note', // Optional tooltip for clarity
|
||||
// )
|
||||
// : IconButton(
|
||||
// onPressed: () async {
|
||||
// await audioController.stopRecording();
|
||||
// },
|
||||
// icon: const Icon(
|
||||
// Icons.stop_circle,
|
||||
// color: AppColor.greenColor,
|
||||
// ),
|
||||
// tooltip:
|
||||
// ' Add Note', // Optional tooltip for clarity
|
||||
// ),
|
||||
audioController.isRecording == false
|
||||
? IconButton(
|
||||
onPressed: () async {
|
||||
await audioController.startRecording();
|
||||
},
|
||||
icon: const Icon(
|
||||
Icons.play_circle_fill_outlined,
|
||||
color: AppColor.greenColor,
|
||||
),
|
||||
tooltip:
|
||||
' Add Note', // Optional tooltip for clarity
|
||||
)
|
||||
: IconButton(
|
||||
onPressed: () async {
|
||||
await audioController.stopRecording();
|
||||
},
|
||||
icon: const Icon(
|
||||
Icons.stop_circle,
|
||||
color: AppColor.greenColor,
|
||||
),
|
||||
tooltip:
|
||||
' Add Note', // Optional tooltip for clarity
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
|
||||
32
pubspec.lock
32
pubspec.lock
@@ -638,6 +638,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_sound:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_sound
|
||||
sha256: "090a4694b11ecc744c2010621c4ffc5fe7c3079d304ea014961a72c7b72cfe6c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.2.13"
|
||||
flutter_sound_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_sound_platform_interface
|
||||
sha256: "4537eaeb58a32748c42b621ad6116f7f4c6ee0a8d6ffaa501b165fe1c9df4753"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.2.13"
|
||||
flutter_sound_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_sound_web
|
||||
sha256: ad4ca92671a1879e1f613e900bbbdb8170b20d57d1e4e6363018fe56b055594f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.2.13"
|
||||
flutter_spinkit:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1280,6 +1304,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.0"
|
||||
logger:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: logger
|
||||
sha256: "7ad7215c15420a102ec687bb320a7312afd449bac63bfb1c60d9787c27b9767f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -57,7 +57,7 @@ dependencies:
|
||||
vibration: ^1.8.4
|
||||
wakelock_plus:
|
||||
background_location: ^0.13.0
|
||||
# flutter_sound: ^9.2.13
|
||||
flutter_sound: ^9.2.13
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user