10/3/1
This commit is contained in:
@@ -1,28 +1,25 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
|
||||
|
||||
<application android:label="SEFER" android:name="${applicationName}" android:icon="@mipmap/launcher_icon">
|
||||
<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||
<application android:label="SEFER" android:name="${applicationName}" android:icon="@mipmap/launcher_icon">
|
||||
<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
the Android process has started. This theme is visible to the user
|
||||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0" />
|
||||
|
||||
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
|
||||
<meta-data android:name="com.android.application.versionCode" android:value="1" />
|
||||
|
||||
<!-- Don't delete the meta-data below.
|
||||
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme"/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0"/>
|
||||
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id"/>
|
||||
<meta-data android:name="com.android.application.versionCode" android:value="1"/>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data android:name="flutterEmbedding" android:value="2" />
|
||||
</application>
|
||||
</manifest>
|
||||
<meta-data android:name="flutterEmbedding" android:value="2"/>
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
@@ -8,6 +8,7 @@ import 'package:ride/constant/colors.dart';
|
||||
import 'package:ride/constant/style.dart';
|
||||
import 'package:ride/controller/functions/crud.dart';
|
||||
import 'package:ride/controller/functions/launch.dart';
|
||||
import 'package:ride/controller/home/captin/map_dirction.dart';
|
||||
import 'package:ride/controller/home/map_page_controller.dart';
|
||||
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||
@@ -18,19 +19,20 @@ import '../../constant/links.dart';
|
||||
import '../../main.dart';
|
||||
import '../../views/orderCaptin/order_request_page.dart';
|
||||
|
||||
class FirebasMessagesController extends GetxController {
|
||||
class FirebaseMessagesController extends GetxController {
|
||||
final fcmToken = FirebaseMessaging.instance;
|
||||
|
||||
List<String> tokens = [];
|
||||
List dataTokens = [];
|
||||
late String driverID;
|
||||
late String driverToken;
|
||||
NotificationSettings? notificationSettings;
|
||||
@override
|
||||
void onInit() async {
|
||||
super.onInit();
|
||||
// getNotificationSettings();
|
||||
getToken();
|
||||
await getTokens();
|
||||
// getToken();
|
||||
// await getTokens();
|
||||
}
|
||||
|
||||
Future<void> getNotificationSettings() async {
|
||||
@@ -106,6 +108,9 @@ class FirebasMessagesController extends GetxController {
|
||||
print(myListString);
|
||||
print('9999999999999myListString999999999999999');
|
||||
var myList = jsonDecode(myListString) as List<dynamic>;
|
||||
driverToken = myList[14].toString();
|
||||
update();
|
||||
print('driverToken==============' + driverToken.toString());
|
||||
Get.to(() => OrderRequestPage(), arguments: {
|
||||
'myListString': myListString,
|
||||
'DriverList': myList,
|
||||
@@ -117,6 +122,7 @@ class FirebasMessagesController extends GetxController {
|
||||
print('9999999999999my Apply Ride 999999999999999');
|
||||
var myList = jsonDecode(passengerList) as List<dynamic>;
|
||||
driverID = myList[2].toString();
|
||||
|
||||
Get.snackbar(
|
||||
'Captin Applied the Ride for You'.tr,
|
||||
'message',
|
||||
@@ -178,12 +184,15 @@ class FirebasMessagesController extends GetxController {
|
||||
);
|
||||
} else if (message.notification!.title!.contains('Promo')) {
|
||||
Get.to(const PromosPassengerPage());
|
||||
} else if (message.notification!.title == ('Ride Begin')) {
|
||||
Get.snackbar(
|
||||
'Trip Begin'.tr,
|
||||
'by Passenger'.tr,
|
||||
backgroundColor: AppColor.yellowColor,
|
||||
} else if (message.notification!.title!.contains('BeginTrip')) {
|
||||
// MapDirection mapDirection = Get.find<MapDirection>();
|
||||
// mapDirection.clearPolyline();
|
||||
print('jjjjjjjjjjjjjjjjjjjjjjjjjjj');
|
||||
Get.defaultDialog(
|
||||
title: 'The Ride is Begin'.tr,
|
||||
backgroundColor: AppColor.greenColor,
|
||||
);
|
||||
MapDirection().clearPolyline();
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -470,27 +479,39 @@ class FirebasMessagesController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
void sendNotificationToDriverId(String title, body, token) async {
|
||||
http
|
||||
.post(Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'key=${AppCredintials.serverAPI}'
|
||||
},
|
||||
body: jsonEncode({
|
||||
'notification': <String, dynamic>{
|
||||
'title': title,
|
||||
'body': body,
|
||||
'sound': 'true'
|
||||
},
|
||||
'data': {},
|
||||
'priority': 'high',
|
||||
'to': token,
|
||||
}))
|
||||
.whenComplete(() {})
|
||||
.catchError((e) {
|
||||
void sendNotificationToDriverId(
|
||||
String title, String body, String token) async {
|
||||
try {
|
||||
final response = await http.post(
|
||||
Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'key=${AppCredintials.serverAPI}'
|
||||
},
|
||||
body: jsonEncode({
|
||||
'notification': <String, dynamic>{
|
||||
'title': title,
|
||||
'body': body,
|
||||
'sound': 'true'
|
||||
},
|
||||
'data': {},
|
||||
'priority': 'high',
|
||||
'to': token,
|
||||
}),
|
||||
);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
// Notification sent successfully
|
||||
print('Notification sent successfully');
|
||||
} else {
|
||||
// Handle error response
|
||||
print(
|
||||
'Failed to send notification. Status code: ${response.statusCode}');
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle other exceptions
|
||||
print('sendNotification() error: $e');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void sendNotificationToDriverMAP(
|
||||
|
||||
@@ -49,8 +49,8 @@ class CRUD {
|
||||
'Basic ${base64Encode(utf8.encode(AppCredintials.basicAuthCredentials))}',
|
||||
},
|
||||
);
|
||||
print(response.request);
|
||||
print(payload);
|
||||
// print(response.request);
|
||||
// print(payload);
|
||||
|
||||
var jsonData = jsonDecode(response.body);
|
||||
if (response.statusCode == 200) {
|
||||
|
||||
@@ -77,10 +77,10 @@ class LocationController extends GetxController {
|
||||
: null)!;
|
||||
|
||||
// Print location details
|
||||
print('Accuracy: ${_locationData.accuracy}');
|
||||
print('Latitude: ${_locationData.latitude}');
|
||||
print('Longitude: ${_locationData.longitude}');
|
||||
print('Time: ${_locationData.time}');
|
||||
// print('Accuracy: ${_locationData.accuracy}');
|
||||
// print('Latitude: ${_locationData.latitude}');
|
||||
// print('Longitude: ${_locationData.longitude}');
|
||||
// print('Time: ${_locationData.time}');
|
||||
isLoading = false;
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -1,21 +1,69 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
|
||||
import 'package:ride/constant/colors.dart';
|
||||
import 'package:ride/controller/functions/location_controller.dart';
|
||||
|
||||
import '../../../constant/credential.dart';
|
||||
import '../../../constant/links.dart';
|
||||
import '../../functions/crud.dart';
|
||||
|
||||
class MapDirction extends GetxController {
|
||||
class MapDirection extends GetxController {
|
||||
bool isLoading = true;
|
||||
List data = [];
|
||||
LatLngBounds? boundsdata;
|
||||
|
||||
LatLngBounds? boundsData;
|
||||
BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker;
|
||||
final List<LatLng> polylineCoordinates = [];
|
||||
List<Polyline> polyLines = [];
|
||||
Set<Marker> markers = {};
|
||||
|
||||
getMap(LatLng origin, destination) async {
|
||||
void clearPolyline() {
|
||||
polyLines = [];
|
||||
polylineCoordinates.clear();
|
||||
update();
|
||||
}
|
||||
|
||||
void updateMarker() {
|
||||
// Remove the existing marker with the ID `MyLocation`.
|
||||
markers.remove(MarkerId('MyLocation'.tr));
|
||||
|
||||
// Add a new marker with the ID `MyLocation` at the current location of the user.
|
||||
LocationController locationController = Get.find<LocationController>();
|
||||
markers.add(Marker(
|
||||
markerId: MarkerId('MyLocation'.tr),
|
||||
position: locationController.myLocation,
|
||||
draggable: true,
|
||||
icon: carIcon,
|
||||
// infoWindow: const InfoWindow(
|
||||
// title: 'Time',
|
||||
// ),
|
||||
));
|
||||
|
||||
// Update the `markers` set and call the `update()` method on the controller to notify the view that the marker position has changed.
|
||||
update();
|
||||
|
||||
// Reload the marker after 3 seconds.
|
||||
Future.delayed(const Duration(seconds: 3), () {
|
||||
updateMarker();
|
||||
});
|
||||
}
|
||||
|
||||
void addCustomCarIcon() {
|
||||
ImageConfiguration config = ImageConfiguration(
|
||||
size: Size(Get.width * .6, Get.height * .6),
|
||||
// scale: 1.0,
|
||||
);
|
||||
BitmapDescriptor.fromAssetImage(config, 'assets/images/car.png')
|
||||
.then((value) {
|
||||
carIcon = value;
|
||||
update();
|
||||
});
|
||||
}
|
||||
|
||||
getMap(String origin, destination) async {
|
||||
isLoading = false;
|
||||
|
||||
update();
|
||||
@@ -34,7 +82,16 @@ class MapDirction extends GetxController {
|
||||
polylineCoordinates.add(LatLng(lat, lng));
|
||||
}
|
||||
if (polyLines.isNotEmpty) {
|
||||
// clearPolyline();
|
||||
clearPolyline();
|
||||
var polyline = Polyline(
|
||||
polylineId: PolylineId(response["routes"][0]["summary"]),
|
||||
points: polylineCoordinates,
|
||||
width: 10,
|
||||
color: AppColor.blueColor,
|
||||
);
|
||||
polyLines.add(polyline);
|
||||
// rideConfirm = false;
|
||||
update();
|
||||
} else {
|
||||
var polyline = Polyline(
|
||||
polylineId: PolylineId(response["routes"][0]["summary"]),
|
||||
@@ -43,7 +100,7 @@ class MapDirction extends GetxController {
|
||||
color: AppColor.blueColor,
|
||||
);
|
||||
|
||||
// polyLines.add(polyline);
|
||||
polyLines.add(polyline);
|
||||
// rideConfirm = false;
|
||||
update();
|
||||
}
|
||||
@@ -51,6 +108,15 @@ class MapDirction extends GetxController {
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
// Get the passenger location from the arguments.
|
||||
String passengerLocation = Get.arguments['passengerLocation'];
|
||||
String lat = Get.find<LocationController>().myLocation.latitude.toString();
|
||||
String lng = Get.find<LocationController>().myLocation.longitude.toString();
|
||||
String origin = '$lat,$lng';
|
||||
// Set the origin and destination coordinates for the Google Maps directions request.
|
||||
getMap(origin, passengerLocation);
|
||||
addCustomCarIcon();
|
||||
updateMarker();
|
||||
super.onInit();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,6 +168,7 @@ class MapController extends GetxController {
|
||||
}
|
||||
|
||||
var rideId;
|
||||
late String driverToken;
|
||||
int carsOrder = 0;
|
||||
changeConfirmRide() async {
|
||||
PaymentController paymentController = Get.find<PaymentController>();
|
||||
@@ -175,6 +176,8 @@ class MapController extends GetxController {
|
||||
shouldFetch = true;
|
||||
isBottomSheetShown = false;
|
||||
timeToPassengerFromDriverAfterApplied = 60;
|
||||
driverToken =
|
||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString();
|
||||
update();
|
||||
// print('rideConfirm= $rideConfirm');
|
||||
|
||||
@@ -189,7 +192,8 @@ class MapController extends GetxController {
|
||||
"endtime": durationToAdd.toString(),
|
||||
"price": totalPassenger.toString(),
|
||||
"passenger_id": box.read(BoxName.pasengerID).toString(),
|
||||
"driver_id": dataCarsLocationByPassenger['message'][0]['id'].toString(),
|
||||
"driver_id":
|
||||
dataCarsLocationByPassenger['message'][carsOrder]['id'].toString(),
|
||||
"status": "waiting",
|
||||
"price_for_driver": totalDriver.toString(),
|
||||
"price_for_passenger": totalME.toString(),
|
||||
@@ -214,9 +218,10 @@ class MapController extends GetxController {
|
||||
box.read(BoxName.phone).toString(),
|
||||
durationByPassenger.toString(),
|
||||
distanceByPassenger.toString(),
|
||||
paymentController.isWalletChecked.toString()
|
||||
paymentController.isWalletChecked.toString(),
|
||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
||||
];
|
||||
FirebasMessagesController().sendNotificationToDriverMAP(
|
||||
FirebaseMessagesController().sendNotificationToDriverMAP(
|
||||
'Order',
|
||||
jsonDecode(value)['message'].toString(),
|
||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
||||
@@ -410,6 +415,7 @@ class MapController extends GetxController {
|
||||
changeCancelRidePageShow();
|
||||
rideConfirm = false;
|
||||
shouldFetch = false;
|
||||
timeToPassengerFromDriverAfterApplied = 0;
|
||||
update();
|
||||
} else {
|
||||
clearPlaces();
|
||||
@@ -417,12 +423,13 @@ class MapController extends GetxController {
|
||||
data = [];
|
||||
rideConfirm = false;
|
||||
shouldFetch = false;
|
||||
timeToPassengerFromDriverAfterApplied = 0;
|
||||
changeCancelRidePageShow();
|
||||
remainingTime = 25;
|
||||
update();
|
||||
|
||||
await CRUD().post(link: AppLink.addCancelRideFromPassenger, payload: {
|
||||
"driverID": FirebasMessagesController()
|
||||
"driverID": FirebaseMessagesController()
|
||||
.driverID
|
||||
.toString(), // Convert to String
|
||||
"passengerID":
|
||||
|
||||
@@ -40,9 +40,9 @@ void main() async {
|
||||
);
|
||||
}
|
||||
|
||||
await FirebasMessagesController().requestFirebaseMessagingPermission();
|
||||
await FirebaseMessagesController().requestFirebaseMessagingPermission();
|
||||
// await FirebasMessagesController().getNotificationSettings();
|
||||
await FirebasMessagesController().getToken();
|
||||
await FirebaseMessagesController().getToken();
|
||||
// await FirebasMessagesController().getTokens();
|
||||
LocationPermissions().locationPermissions();
|
||||
FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
|
||||
|
||||
@@ -67,37 +67,27 @@ class TimerToPassengerFromDriver extends StatelessWidget {
|
||||
? MyElevatedButton(
|
||||
title: 'If you in Car Now. Press Start The Ride',
|
||||
onPressed: () async {
|
||||
MapController mapController =
|
||||
Get.find<MapController>();
|
||||
final firebasMessagesController =
|
||||
Get.put(FirebasMessagesController());
|
||||
//todo start the trip and rest all counter ,start new counter of the trip time
|
||||
|
||||
await CRUD()
|
||||
.post(link: AppLink.updateRides, payload: {
|
||||
'id': mapController.rideId,
|
||||
'id': controller.rideId,
|
||||
'rideTimeStart': DateTime.now().toString(),
|
||||
'status': 'Applied'
|
||||
});
|
||||
mapController.driverArrivePassenger();
|
||||
controller.driverArrivePassenger();
|
||||
// Send notification to driver to alert him that trip is begin
|
||||
firebasMessagesController
|
||||
FirebaseMessagesController()
|
||||
.sendNotificationToDriverId(
|
||||
'Ride Begin',
|
||||
'BeginTrip',
|
||||
box.read(BoxName.name).toString(),
|
||||
mapController
|
||||
.dataCarsLocationByPassenger['message'][0]
|
||||
['token']
|
||||
.toString(),
|
||||
);
|
||||
print(mapController
|
||||
.dataCarsLocationByPassenger['message'][0]
|
||||
['token']
|
||||
.toString());
|
||||
Get.snackbar(
|
||||
'The Ride is Begin'.tr,
|
||||
'',
|
||||
backgroundColor: AppColor.greenColor,
|
||||
controller.driverToken.toString(),
|
||||
);
|
||||
print(controller.driverToken.toString());
|
||||
// Get.defaultDialog(
|
||||
// title: 'The Ride is Begin'.tr,
|
||||
// backgroundColor: AppColor.greenColor,
|
||||
// );
|
||||
})
|
||||
: const SizedBox()
|
||||
],
|
||||
|
||||
@@ -178,7 +178,7 @@ class OrderRequestPage extends StatelessWidget {
|
||||
box.read(BoxName.tokenDriver).toString(),
|
||||
];
|
||||
// print(bodyToPassenger);
|
||||
FirebasMessagesController()
|
||||
FirebaseMessagesController()
|
||||
.sendNotificanToPassengerToken(
|
||||
'Apply Ride',
|
||||
arguments['DriverList'][9].toString(),
|
||||
@@ -187,7 +187,9 @@ class OrderRequestPage extends StatelessWidget {
|
||||
bodyToPassenger,
|
||||
);
|
||||
Get.back();
|
||||
Get.to(() => PassengerLocationDirection());
|
||||
Get.to(() => PassengerLocationDirection(), arguments: {
|
||||
'passengerLocation': myList[0].toString(),
|
||||
});
|
||||
},
|
||||
),
|
||||
GetBuilder<OrderRequestController>(
|
||||
@@ -222,7 +224,7 @@ class OrderRequestPage extends StatelessWidget {
|
||||
orderRequestController.refuseOrder(
|
||||
myList[6].toString(), body.toString());
|
||||
|
||||
FirebasMessagesController()
|
||||
FirebaseMessagesController()
|
||||
.sendNotificanToPassengerToken(
|
||||
'Refused Ride',
|
||||
arguments['DriverList'][9].toString(),
|
||||
|
||||
@@ -4,30 +4,65 @@ import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
import 'package:ride/controller/home/captin/map_dirction.dart';
|
||||
import 'package:ride/views/widgets/my_scafold.dart';
|
||||
|
||||
import '../../constant/colors.dart';
|
||||
import '../../controller/functions/location_controller.dart';
|
||||
import '../widgets/mycircular.dart';
|
||||
import '../home/map_widget.dart/passenger_info_window.dart';
|
||||
import '../home/map_widget.dart/timer_to_passenger_from_driver.dart';
|
||||
|
||||
class PassengerLocationDirection extends StatelessWidget {
|
||||
PassengerLocationDirection({super.key});
|
||||
// final LocationController locationController = Get.put(LocationController());
|
||||
// final MapDirection mapDirection = Get.find<MapDirection>();
|
||||
final LocationController locationController = Get.put(LocationController());
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Get.put(LocationController());
|
||||
Get.put(MapDirection());
|
||||
|
||||
// mapDirection.getMap();//todo get this argument
|
||||
return MyScafolld(
|
||||
title: 'Map'.tr,
|
||||
body: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: GetBuilder<LocationController>(
|
||||
builder: (controller) => GoogleMap(
|
||||
initialCameraPosition: CameraPosition(
|
||||
target: controller.myLocation,
|
||||
zoom: 15,
|
||||
),
|
||||
)),
|
||||
)
|
||||
child: GetBuilder<MapDirection>(
|
||||
builder: (controller) => GoogleMap(
|
||||
initialCameraPosition: CameraPosition(
|
||||
target: locationController.myLocation,
|
||||
zoom: 15,
|
||||
),
|
||||
polylines: {
|
||||
Polyline(
|
||||
zIndex: 2,
|
||||
consumeTapEvents: true,
|
||||
geodesic: true,
|
||||
endCap: Cap.buttCap,
|
||||
startCap: Cap.buttCap,
|
||||
visible: true,
|
||||
polylineId: const PolylineId('route'),
|
||||
points: controller.polylineCoordinates,
|
||||
color: AppColor.greenColor,
|
||||
width: 5,
|
||||
),
|
||||
},
|
||||
markers: {
|
||||
Marker(
|
||||
markerId: MarkerId('MyLocation'.tr),
|
||||
position: locationController.myLocation,
|
||||
draggable: true,
|
||||
icon: controller.carIcon,
|
||||
infoWindow: const InfoWindow(
|
||||
title: 'Time',
|
||||
// snippet: controller.durationFromDriverToPassenger
|
||||
// .toString(),
|
||||
),
|
||||
),
|
||||
},
|
||||
onCameraMove: (cameraPosition) {
|
||||
controller.updateMarker();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
// const TimerToPassengerFromDriver(),
|
||||
const PassengerInfoWindow()
|
||||
],
|
||||
isleading: true);
|
||||
}
|
||||
|
||||
@@ -67,6 +67,7 @@ flutter:
|
||||
- assets/images/
|
||||
- assets/lottie/
|
||||
- assets/fonts/
|
||||
- shorebird.yaml
|
||||
|
||||
fonts:
|
||||
- family: digital-counter-7
|
||||
|
||||
14
shorebird.yaml
Normal file
14
shorebird.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
# This file is used to configure the Shorebird updater used by your app.
|
||||
# Learn more at https://docs.shorebird.dev
|
||||
# This file should be checked into version control.
|
||||
|
||||
# This is the unique identifier assigned to your app.
|
||||
# Your app_id is not a secret and is just used to identify your app
|
||||
# when requesting patches from Shorebird's servers.
|
||||
app_id: 8a571d7f-dfbf-4a65-be62-17eed08cbd5c
|
||||
|
||||
# auto_update controls if Shorebird should automatically update in the background on launch.
|
||||
# If auto_update: false, you will need to use package:shorebird_code_push to trigger updates.
|
||||
# https://pub.dev/packages/shorebird_code_push
|
||||
# Uncomment the following line to disable automatic updates.
|
||||
# auto_update: false
|
||||
Reference in New Issue
Block a user