modified: android/app/build.gradle

modified:   android/app/src/main/AndroidManifest.xml
	modified:   lib/controller/firebase/firbase_messge.dart
	modified:   lib/controller/functions/call_controller.dart
	modified:   lib/controller/functions/crud.dart
	modified:   lib/views/home/map_widget.dart/call_passenger_page.dart
	modified:   macos/Flutter/GeneratedPluginRegistrant.swift
	modified:   pubspec.lock
	modified:   pubspec.yaml
	modified:   windows/flutter/generated_plugin_registrant.cc
	modified:   windows/flutter/generated_plugins.cmake
This commit is contained in:
Hamza-Ayed
2024-07-07 13:51:39 +03:00
parent 51d96c93cd
commit 67b5a20058
11 changed files with 407 additions and 448 deletions

View File

@@ -32,7 +32,7 @@ def keystorePropertiesFile = rootProject.file('key.properties')
android { android {
namespace "com.mobileapp.store.ride" namespace "com.mobileapp.store.ride"
compileSdkVersion 33 compileSdkVersion 34
ndkVersion flutter.ndkVersion ndkVersion flutter.ndkVersion
compileOptions { compileOptions {
@@ -54,9 +54,9 @@ android {
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 33 targetSdkVersion 34
versionCode 49 versionCode 50
versionName '1.5.49' versionName '1.5.50'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
} }

View File

@@ -1,67 +1,53 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" />
<!-- Optional: Add this permission if you want to use bluetooth telephony device like
headset/earbuds (min SDK: 23) -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Optional: Add this permission if you want to save your recordings in public folders -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" /> <uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
<!-- Permissions required by the SDK -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Permissions required by the Demo App -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" /> <uses-feature android:name="android.hardware.camera.autofocus" />
<application
<application android:label="SEFER" android:name="${applicationName}" android:label="SEFER"
android:name="${applicationName}"
android:icon="@mipmap/launcher_icon"> android:icon="@mipmap/launcher_icon">
<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" <activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> android:hardwareAccelerated="true"
<!-- Specifies an Android theme to apply to this Activity as soon as android:windowSoftInputMode="adjustResize">
the Android process has started. This theme is visible to the user <meta-data
while the Flutter UI initializes. After that, this theme continues android:name="io.flutter.embedding.android.NormalTheme"
to determine the Window background behind the Flutter UI. -->
<meta-data android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" /> android:resource="@style/NormalTheme" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/api_key" /> <meta-data
android:name="com.google.android.geo.API_KEY"
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/api_key" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" /> android:value="@string/default_notification_channel_id" />
<meta-data android:name="com.android.application.versionCode" android:value="1" /> <meta-data
<!-- Don't delete the meta-data below. android:name="com.android.application.versionCode"
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> android:value="1" />
<meta-data android:name="flutterEmbedding" android:value="2" /> <meta-data
<activity android:name="com.yalantis.ucrop.UCropActivity" android:screenOrientation="portrait" android:name="flutterEmbedding"
android:value="2" />
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
</application> </application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest> </manifest>

View File

@@ -228,11 +228,11 @@ class FirebaseMessagesController extends GetxController {
); );
// } // }
// Assuming GetMaterialApp is initialized and context is valid for navigation // Assuming GetMaterialApp is initialized and context is valid for navigation
Get.to(() => PassengerCallPage( // Get.to(() => PassengerCallPage(
channelName: driverList[1].toString(), // channelName: driverList[1].toString(),
token: driverList[0].toString(), // token: driverList[0].toString(),
remoteID: driverList[2].toString(), // remoteID: driverList[2].toString(),
)); // ));
} catch (e) {} } catch (e) {}
} else if (message.notification!.title! == 'Call Income from Driver'.tr) { } else if (message.notification!.title! == 'Call Income from Driver'.tr) {
try { try {
@@ -246,11 +246,11 @@ class FirebaseMessagesController extends GetxController {
); );
// } // }
// Assuming GetMaterialApp is initialized and context is valid for navigation // Assuming GetMaterialApp is initialized and context is valid for navigation
Get.to(() => PassengerCallPage( // Get.to(() => PassengerCallPage(
channelName: driverList[1].toString(), // channelName: driverList[1].toString(),
token: driverList[0].toString(), // token: driverList[0].toString(),
remoteID: driverList[2].toString(), // remoteID: driverList[2].toString(),
)); // ));
} catch (e) {} } catch (e) {}
} else if (message.notification!.title! == 'Call End'.tr) { } else if (message.notification!.title! == 'Call End'.tr) {
try { try {

View File

@@ -1,134 +1,134 @@
import 'package:SEFER/constant/api_key.dart'; // import 'package:SEFER/constant/api_key.dart';
import 'package:SEFER/controller/functions/crud.dart'; // import 'package:SEFER/controller/functions/crud.dart';
import 'package:SEFER/controller/home/map_passenger_controller.dart'; // import 'package:SEFER/controller/home/map_passenger_controller.dart';
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; // import 'package:agora_rtc_engine/agora_rtc_engine.dart';
import 'package:get/get.dart'; // import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart'; // import 'package:permission_handler/permission_handler.dart';
import '../../constant/box_name.dart'; // import '../../constant/box_name.dart';
import '../firebase/firbase_messge.dart'; // import '../firebase/firbase_messge.dart';
import '../../main.dart'; // import '../../main.dart';
class CallController extends GetxController { // class CallController extends GetxController {
String channelName = ''; // Get.find<MapDriverController>().rideId; // String channelName = ''; // Get.find<MapDriverController>().rideId;
String token = ''; // String token = '';
// int uid = int.parse(box.read(BoxName.phoneDriver)); // uid of the local user // // int uid = int.parse(box.read(BoxName.phoneDriver)); // uid of the local user
int uid = 0; // int uid = 0;
int? remoteUid; // uid of the remote user // int? remoteUid; // uid of the remote user
bool _isJoined = false; // Indicates if the local user has joined the channel // bool _isJoined = false; // Indicates if the local user has joined the channel
String status = ''; // String status = '';
late RtcEngine agoraEngine; // Agora engine instance // late RtcEngine agoraEngine; // Agora engine instance
@override // @override
void onInit() { // void onInit() {
super.onInit(); // super.onInit();
// if (box.read(BoxName.passengerID) != null) { // // if (box.read(BoxName.passengerID) != null) {
channelName = Get.find<MapPassengerController>().rideId; // 'sefer300'; // // channelName = Get.find<MapPassengerController>().rideId; // 'sefer300'; //
remoteUid = int.parse(Get.find<MapPassengerController>().driverPhone); // remoteUid = int.parse(Get.find<MapPassengerController>().driverPhone);
uid = int.parse(box.read(BoxName.phone)); // uid = int.parse(box.read(BoxName.phone));
// } else { // // } else {
// channelName = Get.find<MapDriverController>().rideId; // 'sefer300'; // // // channelName = Get.find<MapDriverController>().rideId; // 'sefer300'; //
// remoteUid = int.parse(Get.find<MapDriverController>().passengerPhone); // // remoteUid = int.parse(Get.find<MapDriverController>().passengerPhone);
// uid = int.parse(box.read(BoxName.phoneDriver)); // // uid = int.parse(box.read(BoxName.phoneDriver));
// } // // }
initAgoraFull(); // initAgoraFull();
} // }
initAgoraFull() async { // initAgoraFull() async {
await fetchToken(); // await fetchToken();
// Set up an instance of Agora engine // // Set up an instance of Agora engine
setupVoiceSDKEngine(); // setupVoiceSDKEngine();
// join(); // // join();
FirebaseMessagesController().sendNotificationToPassengerToken( // FirebaseMessagesController().sendNotificationToPassengerToken(
'Call Income from Passenger', // 'Call Income from Passenger',
'${'You have call from Passenger'.tr} ${box.read(BoxName.name)}', // '${'You have call from Passenger'.tr} ${box.read(BoxName.name)}',
Get.find<MapPassengerController>().driverToken, // Get.find<MapPassengerController>().driverToken,
[ // [
token, // token,
channelName, // channelName,
uid.toString(), // uid.toString(),
remoteUid.toString(), // remoteUid.toString(),
], // ],
'iphone_ringtone.wav', // 'iphone_ringtone.wav',
); // );
join(); // join();
} // }
@override // @override
void onClose() { // void onClose() {
agoraEngine.leaveChannel(); // agoraEngine.leaveChannel();
super.onClose(); // super.onClose();
} // }
Future<void> setupVoiceSDKEngine() async { // Future<void> setupVoiceSDKEngine() async {
// retrieve or request microphone permission // // retrieve or request microphone permission
await [Permission.microphone].request(); // await [Permission.microphone].request();
//create an instance of the Agora engine // //create an instance of the Agora engine
agoraEngine = createAgoraRtcEngine(); // agoraEngine = createAgoraRtcEngine();
await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId)); // await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId));
// Register the event handler // // Register the event handler
agoraEngine.registerEventHandler( // agoraEngine.registerEventHandler(
RtcEngineEventHandler( // RtcEngineEventHandler(
onJoinChannelSuccess: (RtcConnection connection, int elapsed) { // onJoinChannelSuccess: (RtcConnection connection, int elapsed) {
// Get.snackbar( // // Get.snackbar(
// "Local user uid:${connection.localUid} joined the channel", ''); // // "Local user uid:${connection.localUid} joined the channel", '');
status = 'joined'.tr; // status = 'joined'.tr;
_isJoined = true; // _isJoined = true;
update(); // update();
}, // },
onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { // onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) {
// Get.snackbar("Remote user uid:$remoteUid joined the channel", ''); // // Get.snackbar("Remote user uid:$remoteUid joined the channel", '');
status = Get.find<MapPassengerController>().driverName.toString(); // status = Get.find<MapPassengerController>().driverName.toString();
' joined'.tr; // ' joined'.tr;
remoteUid = remoteUid; // remoteUid = remoteUid;
update(); // update();
}, // },
onUserOffline: (RtcConnection connection, int? remoteUid, // onUserOffline: (RtcConnection connection, int? remoteUid,
UserOfflineReasonType reason) { // UserOfflineReasonType reason) {
// Get.snackbar("Remote user uid:$remoteUid left the channel", ''); // // Get.snackbar("Remote user uid:$remoteUid left the channel", '');
status = 'Call left'.tr; // status = 'Call left'.tr;
remoteUid = null; // remoteUid = null;
update(); // update();
}, // },
), // ),
); // );
} // }
void join() async { // void join() async {
// Set channel options including the client role and channel profile // // Set channel options including the client role and channel profile
ChannelMediaOptions options = const ChannelMediaOptions( // ChannelMediaOptions options = const ChannelMediaOptions(
clientRoleType: ClientRoleType.clientRoleBroadcaster, // clientRoleType: ClientRoleType.clientRoleBroadcaster,
channelProfile: ChannelProfileType.channelProfileCommunication, // channelProfile: ChannelProfileType.channelProfileCommunication,
); // );
await agoraEngine.joinChannel( // await agoraEngine.joinChannel(
token: token, // token: token,
channelId: channelName, // channelId: channelName,
options: options, // options: options,
uid: uid, // uid: uid,
); // );
} // }
void leave() { // void leave() {
_isJoined = false; // _isJoined = false;
remoteUid = null; // remoteUid = null;
update(); // update();
agoraEngine.leaveChannel(); // agoraEngine.leaveChannel();
} // }
// Clean up the resources when you leave // // Clean up the resources when you leave
@override // @override
void dispose() async { // void dispose() async {
await agoraEngine.leaveChannel(); // await agoraEngine.leaveChannel();
super.dispose(); // super.dispose();
} // }
fetchToken() async { // fetchToken() async {
var res = await CRUD() // var res = await CRUD()
.getAgoraToken(channelName: channelName, uid: uid.toString()); // .getAgoraToken(channelName: channelName, uid: uid.toString());
token = res; // token = res;
update(); // update();
} // }
} // }

View File

@@ -29,6 +29,7 @@ class CRUD {
); );
print(response.request); print(response.request);
print(response.body); print(response.body);
print(payload);
// if (response.statusCode == 200) { // if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body); var jsonData = jsonDecode(response.body);
if (jsonData['status'] == 'success') { if (jsonData['status'] == 'success') {

View File

@@ -1,258 +1,258 @@
import 'dart:async'; // import 'dart:async';
import 'package:SEFER/constant/box_name.dart'; // import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/controller/home/map_passenger_controller.dart'; // import 'package:SEFER/controller/home/map_passenger_controller.dart';
import 'package:SEFER/main.dart'; // import 'package:SEFER/main.dart';
import 'package:SEFER/views/widgets/my_scafold.dart'; // import 'package:SEFER/views/widgets/my_scafold.dart';
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:get/get.dart'; // import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart'; // import 'package:permission_handler/permission_handler.dart';
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; // import 'package:agora_rtc_engine/agora_rtc_engine.dart';
import '../../../../constant/api_key.dart'; // import '../../../../constant/api_key.dart';
import '../../../constant/colors.dart'; // import '../../../constant/colors.dart';
import '../../../constant/style.dart'; // import '../../../constant/style.dart';
import '../../../controller/firebase/firbase_messge.dart'; // import '../../../controller/firebase/firbase_messge.dart';
String appId = AK.agoraAppId; // String appId = AK.agoraAppId;
class PassengerCallPage extends StatefulWidget { // class PassengerCallPage extends StatefulWidget {
const PassengerCallPage({ // const PassengerCallPage({
super.key, // super.key,
required this.channelName, // required this.channelName,
required this.token, // required this.token,
required this.remoteID, // required this.remoteID,
}); // });
final String channelName, token, remoteID; // final String channelName, token, remoteID;
@override // @override
State<PassengerCallPage> createState() => _PassengerCallPageState(); // State<PassengerCallPage> createState() => _PassengerCallPageState();
} // }
class _PassengerCallPageState extends State<PassengerCallPage> { // class _PassengerCallPageState extends State<PassengerCallPage> {
int uid = 0; // int uid = 0;
int? _remoteUid = 0; // uid of the remote user // int? _remoteUid = 0; // uid of the remote user
bool _isJoined = false; // Indicates if the local user has joined the channel // bool _isJoined = false; // Indicates if the local user has joined the channel
late RtcEngine agoraEngine; // Agora engine instance // late RtcEngine agoraEngine; // Agora engine instance
String status = ''; // String status = '';
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey = // final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey =
GlobalKey<ScaffoldMessengerState>(); // Global key to access the scaffold // GlobalKey<ScaffoldMessengerState>(); // Global key to access the scaffold
showMessage(String message) { // showMessage(String message) {
scaffoldMessengerKey.currentState?.showSnackBar(SnackBar( // scaffoldMessengerKey.currentState?.showSnackBar(SnackBar(
content: Text(message), // content: Text(message),
)); // ));
} // }
initAgora() async { // initAgora() async {
await setupVoiceSDKEngine(); // await setupVoiceSDKEngine();
} // }
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
_remoteUid = int.parse(widget.remoteID); // _remoteUid = int.parse(widget.remoteID);
uid = int.parse(box.read(BoxName.phone)); // uid = int.parse(box.read(BoxName.phone));
// Set up an instance of Agora engine // // Set up an instance of Agora engine
initAgora(); // initAgora();
} // }
Future<void> setupVoiceSDKEngine() async { // Future<void> setupVoiceSDKEngine() async {
// retrieve or request microphone permission // // retrieve or request microphone permission
await [Permission.microphone].request(); // await [Permission.microphone].request();
//create an instance of the Agora engine // //create an instance of the Agora engine
agoraEngine = createAgoraRtcEngine(); // agoraEngine = createAgoraRtcEngine();
await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId)); // await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId));
// Register the event handler // // Register the event handler
agoraEngine.registerEventHandler( // agoraEngine.registerEventHandler(
RtcEngineEventHandler( // RtcEngineEventHandler(
onJoinChannelSuccess: (RtcConnection connection, int elapsed) { // onJoinChannelSuccess: (RtcConnection connection, int elapsed) {
showMessage( // showMessage(
"Local user uid:${connection.localUid} joined the channel"); // "Local user uid:${connection.localUid} joined the channel");
setState(() { // setState(() {
_isJoined = true; // _isJoined = true;
status = 'joined'.tr; // status = 'joined'.tr;
}); // });
}, // },
onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { // onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) {
showMessage("Driver joined the channel".tr); // showMessage("Driver joined the channel".tr);
setState(() { // setState(() {
status = "Driver joined the channel".tr; // status = "Driver joined the channel".tr;
_remoteUid = remoteUid; // _remoteUid = remoteUid;
}); // });
}, // },
onUserOffline: (RtcConnection connection, int? remoteUid, // onUserOffline: (RtcConnection connection, int? remoteUid,
UserOfflineReasonType reason) { // UserOfflineReasonType reason) {
showMessage("Driver left the channel".tr); // showMessage("Driver left the channel".tr);
setState(() { // setState(() {
status = "Driver left the channel".tr; // status = "Driver left the channel".tr;
_remoteUid = null; // _remoteUid = null;
}); // });
}, // },
), // ),
); // );
} // }
void join() async { // void join() async {
// Set channel options including the client role and channel profile // // Set channel options including the client role and channel profile
ChannelMediaOptions options = const ChannelMediaOptions( // ChannelMediaOptions options = const ChannelMediaOptions(
clientRoleType: ClientRoleType.clientRoleBroadcaster, // clientRoleType: ClientRoleType.clientRoleBroadcaster,
channelProfile: ChannelProfileType.channelProfileCommunication, // channelProfile: ChannelProfileType.channelProfileCommunication,
); // );
await agoraEngine.joinChannel( // await agoraEngine.joinChannel(
token: widget.token, // token: widget.token,
channelId: widget.channelName, // channelId: widget.channelName,
options: options, // options: options,
uid: uid, // uid: uid,
); // );
} // }
//https://console.agora.io/invite?sign=5e9e22d06f22caeeada9954c9e908572%253A5ba8aed978a35eab5a5113742502ded2a41478b2a81cb19c71a30776e125b58a // //https://console.agora.io/invite?sign=5e9e22d06f22caeeada9954c9e908572%253A5ba8aed978a35eab5a5113742502ded2a41478b2a81cb19c71a30776e125b58a
void leave() { // void leave() {
setState(() { // setState(() {
_isJoined = false; // _isJoined = false;
_remoteUid = null; // _remoteUid = null;
}); // });
agoraEngine.leaveChannel(); // agoraEngine.leaveChannel();
} // }
// Clean up the resources when you leave // // Clean up the resources when you leave
@override // @override
void dispose() async { // void dispose() async {
await agoraEngine.leaveChannel(); // await agoraEngine.leaveChannel();
super.dispose(); // super.dispose();
} // }
// Build UI // // Build UI
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return MaterialApp( // return MaterialApp(
scaffoldMessengerKey: scaffoldMessengerKey, // scaffoldMessengerKey: scaffoldMessengerKey,
home: MyScafolld( // home: MyScafolld(
// appBar: AppBar( // // appBar: AppBar(
// title: const Text('Get started with Voice Calling'), // // title: const Text('Get started with Voice Calling'),
// ), // // ),
title: 'Call Page'.tr, // title: 'Call Page'.tr,
isleading: true, // isleading: true,
body: [ // body: [
Positioned( // Positioned(
top: Get.height * .2, // top: Get.height * .2,
child: Container( // child: Container(
height: 100, width: Get.width, // height: 100, width: Get.width,
decoration: AppStyle.boxDecoration, // decoration: AppStyle.boxDecoration,
child: Row( // child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, // mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [ // children: [
GestureDetector( // GestureDetector(
onTap: () async { // onTap: () async {
// await callController.initAgoraFull(); // // await callController.initAgoraFull();
// callController.join(); // // callController.join();
// FirebaseMessagesController().sendNotificationToPassengerToken( // // FirebaseMessagesController().sendNotificationToPassengerToken(
// 'Call Income', // // 'Call Income',
// '${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}', // // '${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}',
// Get.find<MapDriverController>().tokenPassenger, // // Get.find<MapDriverController>().tokenPassenger,
// [ // // [
// callController.token, // // callController.token,
// callController.channelName, // // callController.channelName,
// callController.uid.toString(), // // callController.uid.toString(),
// callController.remoteUid.toString(), // // callController.remoteUid.toString(),
// ], // // ],
// ); // // );
join(); // join();
// callController.fetchToken(); // // callController.fetchToken();
}, // },
child: Container( // child: Container(
width: 50, // width: 50,
height: 50, // height: 50,
decoration: const BoxDecoration( // decoration: const BoxDecoration(
shape: BoxShape.circle, // shape: BoxShape.circle,
color: AppColor.greenColor), // color: AppColor.greenColor),
child: const Icon( // child: const Icon(
Icons.phone, // Icons.phone,
size: 35, // size: 35,
color: AppColor.secondaryColor, // color: AppColor.secondaryColor,
)), // )),
), // ),
Column( // Column(
children: [ // children: [
Text( // Text(
status, // status,
style: AppStyle.title, // style: AppStyle.title,
), // ),
Text('Driver Name'), // Text('Driver Name'),
], // ],
), // ),
GestureDetector( // GestureDetector(
onTap: () async { // onTap: () async {
FirebaseMessagesController() // FirebaseMessagesController()
.sendNotificationToPassengerToken( // .sendNotificationToPassengerToken(
'Call End'.tr, // 'Call End'.tr,
'Call End', // 'Call End',
Get.find<MapPassengerController>().driverToken, // Get.find<MapPassengerController>().driverToken,
[], // [],
'iphone_ringtone.wav', // 'iphone_ringtone.wav',
); // );
leave(); // leave();
Get.back(); // Get.back();
}, // // },
child: Container( // child: Container(
width: 50, // width: 50,
height: 50, // height: 50,
decoration: const BoxDecoration( // decoration: const BoxDecoration(
shape: BoxShape.circle, color: AppColor.redColor), // shape: BoxShape.circle, color: AppColor.redColor),
child: const Icon( // child: const Icon(
Icons.phone_disabled_sharp, // Icons.phone_disabled_sharp,
size: 35, // size: 35,
color: AppColor.secondaryColor, // color: AppColor.secondaryColor,
)), // )),
) // )
], // ],
), // ),
// ignore: prefer_const_constructors // // ignore: prefer_const_constructors
), // ),
), // ),
// ListView( // // ListView(
// padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), // // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
// children: [ // // children: [
// // Status text // // // Status text
// Container(height: 40, child: Center(child: _status())), // // Container(height: 40, child: Center(child: _status())),
// // Button Row // // // Button Row
// Row( // // Row(
// children: <Widget>[ // // children: <Widget>[
// Expanded( // // Expanded(
// child: ElevatedButton( // // child: ElevatedButton(
// child: Text("Join".tr), // // child: Text("Join".tr),
// onPressed: () => {join()}, // // onPressed: () => {join()},
// ), // // ),
// ), // // ),
// const SizedBox(width: 10), // // const SizedBox(width: 10),
// Expanded( // // Expanded(
// child: ElevatedButton( // // child: ElevatedButton(
// child: Text("Leave".tr), // // child: Text("Leave".tr),
// onPressed: () => {leave()}, // // onPressed: () => {leave()},
// ), // // ),
// ), // // ),
// ], // // ],
// ), // // ),
// ], // // ],
// ), // // ),
]), // ]),
); // );
} // }
// Widget _status() { // // Widget _status() {
// String statusText; // // String statusText;
// // //
// if (!_isJoined) { // // if (!_isJoined) {
// statusText = 'Join a channel'.tr; // // statusText = 'Join a channel'.tr;
// } else if (_remoteUid == null) // // } else if (_remoteUid == null)
// statusText = 'Waiting for a remote user to join...'; // // statusText = 'Waiting for a remote user to join...';
// else // // else
// statusText = 'Connected to remote user, uid:$_remoteUid'; // // statusText = 'Connected to remote user, uid:$_remoteUid';
// // //
// return Text( // // return Text(
// statusText, // // statusText,
// ); // // );
// } // // }
} // }

View File

@@ -5,7 +5,6 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import agora_rtc_engine
import audio_session import audio_session
import device_info_plus import device_info_plus
import file_selector_macos import file_selector_macos
@@ -17,7 +16,6 @@ import flutter_secure_storage_macos
import flutter_tts import flutter_tts
import geolocator_apple import geolocator_apple
import google_sign_in_ios import google_sign_in_ios
import iris_method_channel
import just_audio import just_audio
import location import location
import package_info_plus import package_info_plus
@@ -30,7 +28,6 @@ import video_player_avfoundation
import wakelock_plus import wakelock_plus
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AgoraRtcNgPlugin.register(with: registry.registrar(forPlugin: "AgoraRtcNgPlugin"))
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
@@ -42,7 +39,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin")) FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
IrisMethodChannelPlugin.register(with: registry.registrar(forPlugin: "IrisMethodChannelPlugin"))
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))

View File

@@ -17,14 +17,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.34" version: "1.3.34"
agora_rtc_engine:
dependency: "direct main"
description:
name: agora_rtc_engine
sha256: ec84db08cd6727e3e480abe9089df4a9522aa4315f688ac2abf25a82f26c4055
url: "https://pub.dev"
source: hosted
version: "6.3.0"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
@@ -1064,14 +1056,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.4" version: "1.0.4"
iris_method_channel:
dependency: transitive
description:
name: iris_method_channel
sha256: "78caede20be4a1dd258262fb13704aab2f16fd05ef414bed06e7b1e3b95b3413"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
js: js:
dependency: transitive dependency: transitive
description: description:

View File

@@ -42,7 +42,7 @@ dependencies:
envied: ^0.5.2 envied: ^0.5.2
# cached_network_image: ^3.3.0 # cached_network_image: ^3.3.0
calendar_builder: ^0.0.6 calendar_builder: ^0.0.6
agora_rtc_engine: ^6.2.6 # agora_rtc_engine: ^6.2.6
flutter_tts: ^3.8.5 flutter_tts: ^3.8.5
permission_handler: ^11.3.0 permission_handler: ^11.3.0
# google_generative_ai: ^0.0.1-dev # google_generative_ai: ^0.0.1-dev

View File

@@ -6,22 +6,18 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <agora_rtc_engine/agora_rtc_engine_plugin.h>
#include <file_selector_windows/file_selector_windows.h> #include <file_selector_windows/file_selector_windows.h>
#include <firebase_auth/firebase_auth_plugin_c_api.h> #include <firebase_auth/firebase_auth_plugin_c_api.h>
#include <firebase_core/firebase_core_plugin_c_api.h> #include <firebase_core/firebase_core_plugin_c_api.h>
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h> #include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
#include <flutter_tts/flutter_tts_plugin.h> #include <flutter_tts/flutter_tts_plugin.h>
#include <geolocator_windows/geolocator_windows.h> #include <geolocator_windows/geolocator_windows.h>
#include <iris_method_channel/iris_method_channel_plugin_c_api.h>
#include <local_auth_windows/local_auth_plugin.h> #include <local_auth_windows/local_auth_plugin.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h> #include <permission_handler_windows/permission_handler_windows_plugin.h>
#include <record_windows/record_windows_plugin_c_api.h> #include <record_windows/record_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h> #include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
AgoraRtcEnginePluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("AgoraRtcEnginePlugin"));
FileSelectorWindowsRegisterWithRegistrar( FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows")); registry->GetRegistrarForPlugin("FileSelectorWindows"));
FirebaseAuthPluginCApiRegisterWithRegistrar( FirebaseAuthPluginCApiRegisterWithRegistrar(
@@ -34,8 +30,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("FlutterTtsPlugin")); registry->GetRegistrarForPlugin("FlutterTtsPlugin"));
GeolocatorWindowsRegisterWithRegistrar( GeolocatorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GeolocatorWindows")); registry->GetRegistrarForPlugin("GeolocatorWindows"));
IrisMethodChannelPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("IrisMethodChannelPluginCApi"));
LocalAuthPluginRegisterWithRegistrar( LocalAuthPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("LocalAuthPlugin")); registry->GetRegistrarForPlugin("LocalAuthPlugin"));
PermissionHandlerWindowsPluginRegisterWithRegistrar( PermissionHandlerWindowsPluginRegisterWithRegistrar(

View File

@@ -3,14 +3,12 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
agora_rtc_engine
file_selector_windows file_selector_windows
firebase_auth firebase_auth
firebase_core firebase_core
flutter_secure_storage_windows flutter_secure_storage_windows
flutter_tts flutter_tts
geolocator_windows geolocator_windows
iris_method_channel
local_auth_windows local_auth_windows
permission_handler_windows permission_handler_windows
record_windows record_windows