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:
@@ -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']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -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') {
|
||||||
|
|||||||
@@ -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,
|
||||||
// );
|
// // );
|
||||||
// }
|
// // }
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -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"))
|
||||||
|
|||||||
16
pubspec.lock
16
pubspec.lock
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user