2/6/3
This commit is contained in:
25
lib/controller/functions/tts.dart
Normal file
25
lib/controller/functions/tts.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'package:flutter_tts/flutter_tts.dart';
|
||||
|
||||
class TextToSpeech {
|
||||
final FlutterTts tts = FlutterTts();
|
||||
|
||||
// Initialize the TTS engine with desired settings
|
||||
Future initTts() async {
|
||||
await tts.setLanguage('en-US'); // Set language
|
||||
await tts.setSpeechRate(0.8); // Adjust speech rate
|
||||
await tts.setVolume(1.0); // Set volume
|
||||
}
|
||||
|
||||
// Speak the given text
|
||||
Future speakText(String text) async {
|
||||
await tts.speak(text);
|
||||
}
|
||||
|
||||
// Stop speaking
|
||||
Future stopSpeaking() async {
|
||||
await tts.stop();
|
||||
}
|
||||
|
||||
// Check if TTS is currently speaking
|
||||
// bool isSpeaking() => tts.isSpeaking;
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:math' show cos;
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -1461,6 +1463,8 @@ class MapPassengerController extends GetxController {
|
||||
//print(nearestCar!.id);
|
||||
}
|
||||
|
||||
List<double> headingAngles = [];
|
||||
|
||||
late LatLngBounds boundsData;
|
||||
getMap(String origin, destination) async {
|
||||
await getCarsLocationByPassenger();
|
||||
@@ -1510,7 +1514,23 @@ class MapPassengerController extends GetxController {
|
||||
double distanceOfTrip = (data[0]['distance']['value']) / 1000;
|
||||
distance = distanceOfTrip;
|
||||
// updateCameraForDistanceAfterGetMap();
|
||||
for (var step in data[0]['steps']) {
|
||||
var startLat = step['start_location']['lat'];
|
||||
var startLng = step['start_location']['lng'];
|
||||
|
||||
var endLat = step['end_location']['lat'];
|
||||
var endLng = step['end_location']['lng'];
|
||||
|
||||
// Calculate heading
|
||||
var y = math.sin(endLng - startLng) * math.cos(endLat);
|
||||
var x = math.cos(startLat) * math.sin(endLat) -
|
||||
math.sin(startLat) * math.cos(endLat) * math.cos(endLng - startLng);
|
||||
var theta = math.atan2(y, x);
|
||||
|
||||
// Add to list
|
||||
headingAngles.add(theta);
|
||||
}
|
||||
print(headingAngles);
|
||||
if (polyLines.isNotEmpty) {
|
||||
clearPolyline();
|
||||
} else {
|
||||
@@ -1851,6 +1871,15 @@ class MapPassengerController extends GetxController {
|
||||
update();
|
||||
}
|
||||
|
||||
initilizeGetStorage() {
|
||||
if (box.read(BoxName.addWork).toString() == '') {
|
||||
box.write(BoxName.addWork, 'addWork');
|
||||
}
|
||||
if (box.read(BoxName.addHome).toString() == '') {
|
||||
box.write(BoxName.addHome, 'addHome');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() async {
|
||||
mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY);
|
||||
@@ -1865,6 +1894,7 @@ class MapPassengerController extends GetxController {
|
||||
addCustomStartIcon();
|
||||
addCustomEndIcon();
|
||||
startMarkerReloading();
|
||||
initilizeGetStorage();
|
||||
cardNumber = await SecureStorage().readData(BoxName.cardNumber);
|
||||
|
||||
super.onInit();
|
||||
|
||||
@@ -207,8 +207,13 @@ GetBuilder<MapPassengerController> formSearchPlacesDestenation() {
|
||||
controller.changePickerShown();
|
||||
}));
|
||||
},
|
||||
child: Text(
|
||||
'Work : ${box.read(BoxName.addWork) == 'addWork' ? 'Add Work' : box.read(BoxName.addWork).toString().split(',')[0] + box.read(BoxName.addWork).toString().split(',')[1]} '),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.greenColor.withOpacity(.4),
|
||||
border: Border.all()),
|
||||
child: Text(
|
||||
'Work : ${box.read(BoxName.addWork) == 'addWork' ? 'Add Work' : box.read(BoxName.addWork).toString().split(',')[0] + box.read(BoxName.addWork).toString().split(',')[1]} '),
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
onLongPress: () {
|
||||
@@ -243,8 +248,13 @@ GetBuilder<MapPassengerController> formSearchPlacesDestenation() {
|
||||
controller.update();
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
'Home : ${box.read(BoxName.addHome) == 'addHome' ? 'Add Home' : box.read(BoxName.addHome)} '),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.yellowColor.withOpacity(.4),
|
||||
border: Border.all()),
|
||||
child: Text(
|
||||
'Home : ${box.read(BoxName.addHome) == 'addHome' ? 'Add Home' : box.read(BoxName.addHome)} '),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:get/get.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
|
||||
import '../../../constant/colors.dart';
|
||||
import '../../../controller/functions/tts.dart';
|
||||
import '../../../controller/home/map_passenger_controller.dart';
|
||||
|
||||
GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
||||
@@ -56,7 +57,27 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
||||
const SizedBox(
|
||||
height: 5,
|
||||
),
|
||||
// if (Platform.isIOS)
|
||||
if (Platform.isIOS)
|
||||
AnimatedContainer(
|
||||
duration: const Duration(microseconds: 200),
|
||||
width: controller.widthMapTypeAndTraffic,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.secondaryColor,
|
||||
border: Border.all(),
|
||||
borderRadius: BorderRadius.circular(15)),
|
||||
child: IconButton(
|
||||
onPressed: () {
|
||||
controller.mapController?.animateCamera(
|
||||
CameraUpdate.newLatLng(LatLng(
|
||||
controller.passengerLocation.latitude,
|
||||
controller.passengerLocation.longitude)));
|
||||
},
|
||||
icon: const Icon(
|
||||
Icons.location_on,
|
||||
size: 29,
|
||||
),
|
||||
),
|
||||
),
|
||||
AnimatedContainer(
|
||||
duration: const Duration(microseconds: 200),
|
||||
width: controller.widthMapTypeAndTraffic,
|
||||
@@ -66,13 +87,12 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
||||
borderRadius: BorderRadius.circular(15)),
|
||||
child: IconButton(
|
||||
onPressed: () {
|
||||
controller.mapController?.animateCamera(
|
||||
CameraUpdate.newLatLng(LatLng(
|
||||
controller.passengerLocation.latitude,
|
||||
controller.passengerLocation.longitude)));
|
||||
final _textToSpeech = TextToSpeech();
|
||||
_textToSpeech.initTts();
|
||||
_textToSpeech.speakText("Hello, world!");
|
||||
},
|
||||
icon: const Icon(
|
||||
Icons.location_on,
|
||||
Icons.voice_chat,
|
||||
size: 29,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -13,6 +13,7 @@ import firebase_core
|
||||
import firebase_messaging
|
||||
import flutter_local_notifications
|
||||
import flutter_secure_storage_macos
|
||||
import flutter_tts
|
||||
import geolocator_apple
|
||||
import iris_method_channel
|
||||
import just_audio
|
||||
@@ -33,6 +34,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
|
||||
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
|
||||
FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin"))
|
||||
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
||||
IrisMethodChannelPlugin.register(with: registry.registrar(forPlugin: "IrisMethodChannelPlugin"))
|
||||
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
|
||||
|
||||
@@ -659,6 +659,14 @@ packages:
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_tts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_tts
|
||||
sha256: cbb3fd43b946e62398560235469e6113e4fe26c40eab1b7cb5e7c417503fb3a8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.8.5"
|
||||
flutter_web_plugins:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
||||
@@ -51,6 +51,7 @@ dependencies:
|
||||
calendar_builder: ^0.0.6
|
||||
fl_chart: ^0.66.0
|
||||
agora_rtc_engine: ^6.2.6
|
||||
flutter_tts: ^3.8.5
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <file_selector_windows/file_selector_windows.h>
|
||||
#include <firebase_core/firebase_core_plugin_c_api.h>
|
||||
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
|
||||
#include <flutter_tts/flutter_tts_plugin.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>
|
||||
@@ -24,6 +25,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
||||
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
|
||||
FlutterTtsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterTtsPlugin"));
|
||||
GeolocatorWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("GeolocatorWindows"));
|
||||
IrisMethodChannelPluginCApiRegisterWithRegistrar(
|
||||
|
||||
@@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||
file_selector_windows
|
||||
firebase_core
|
||||
flutter_secure_storage_windows
|
||||
flutter_tts
|
||||
geolocator_windows
|
||||
iris_method_channel
|
||||
local_auth_windows
|
||||
|
||||
Reference in New Issue
Block a user