diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 366647c0..a48231b2 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -220,6 +220,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, EFDAD5E1235DCA1DB6187148 /* [CP] Embed Pods Frameworks */, + A22727229BC544AD6D5B2B5F /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -333,6 +334,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A22727229BC544AD6D5B2B5F /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; EFDAD5E1235DCA1DB6187148 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 2dc828d1..c4a74c80 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -11,7 +11,7 @@ var userNotificationCenterDelegate:UNUserNotificationCenterDelegate? = nil override func application( _ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - GMSServices.provideAPIKey("AIzaSyCiiJiHkocPbcziHt9O8rGWavDrxHRQys8") + GMSServices.provideAPIKey("AIzaSyCmevVlr2Bh-c8W1VUzo8gt8JRY7n5PANw") GeneratedPluginRegistrant.register(with: self) initializePlatformChannel() diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index a6b4d219..614f3a54 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -378,6 +378,7 @@ const Map localizedValues = { "History": {"en": "History", "ar": "السجلات"}, "OrderNo": {"en": "Order No", "ar": "رقم الطلب"}, "OrderDetails": {"en": "Order Details", "ar": "تفاصيل الطلب"}, + "DeliveryDriverTrack": {"en": "Driver Tracking", "ar": "تتبع السائق"}, "VitalSign": {"en": "Vital Sign", "ar": "العلامة حيوية"}, "MonthlyReports": {"en": "Monthly Reports", "ar": "تقارير شهرية"}, "km": {"en": "KMs:", "ar": "كم"}, diff --git a/lib/pages/pharmacy/order/TrackDriver.dart b/lib/pages/pharmacy/order/TrackDriver.dart index 5a2e20c8..89e75e19 100644 --- a/lib/pages/pharmacy/order/TrackDriver.dart +++ b/lib/pages/pharmacy/order/TrackDriver.dart @@ -1,11 +1,16 @@ import 'dart:async'; +import 'dart:typed_data'; +import 'dart:ui' as ui; import 'package:async/async.dart'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart'; import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart'; import 'package:diplomaticquarterapp/locator.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_animarker/lat_lng_interpolation.dart'; import 'package:flutter_animarker/models/lat_lng_delta.dart'; import 'package:flutter_animarker/models/lat_lng_info.dart'; @@ -104,7 +109,12 @@ class _TrackDriverState extends State { @override Widget build(BuildContext context) { - return new Scaffold( + return AppScaffold( + appBarTitle: TranslationBase.of(context).deliveryDriverTrack, + isShowAppBar: true, + isPharmacy: true, + showPharmacyCart: false, + showHomeAppBarIcon: false, body: GoogleMap( myLocationEnabled: true, compassEnabled: true, @@ -127,13 +137,10 @@ class _TrackDriverState extends State { void setSourceAndDestinationIcons() async { - sourceIcon = await BitmapDescriptor.fromAssetImage( - ImageConfiguration(devicePixelRatio: 2.5), - 'assets/images/map_markers/source_map_marker.png'); - - destinationIcon = await BitmapDescriptor.fromAssetImage( - ImageConfiguration(devicePixelRatio: 2.5), - 'assets/images/map_markers/destination_map_marker.png'); + final Uint8List srcMarkerBytes = await getBytesFromAsset('assets/images/map_markers/source_map_marker.png', getMarkerIconSize()); + final Uint8List destMarkerBytes = await getBytesFromAsset('assets/images/map_markers/destination_map_marker.png', getMarkerIconSize()); + sourceIcon = await BitmapDescriptor.fromBytes(srcMarkerBytes); + destinationIcon = await BitmapDescriptor.fromBytes(destMarkerBytes); } CameraPosition _orderDeliveryLocationCamera(){ @@ -298,4 +305,15 @@ class _TrackDriverState extends State { stopUpdatingDriverLocation(){ isLocationUpdating = false; } + + Future getBytesFromAsset(String path, int width) async { + ByteData data = await rootBundle.load(path); + ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List(), targetWidth: width); + ui.FrameInfo fi = await codec.getNextFrame(); + return (await fi.image.toByteData(format: ui.ImageByteFormat.png)).buffer.asUint8List(); + } + + int getMarkerIconSize(){ + return 140; + } } \ No newline at end of file diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index a3d67127..557dc6f7 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -562,6 +562,7 @@ class TranslationBase { String get reviewComment => localizedValues['reviewComment'][locale.languageCode]; String get shippedMethod => localizedValues['shippedMethod'][locale.languageCode]; String get orderDetail => localizedValues['orderDetail'][locale.languageCode]; + String get deliveryDriverTrack => localizedValues['DeliveryDriverTrack'][locale.languageCode]; String get subtotal => localizedValues['subtotal'][locale.languageCode]; String get shipping => localizedValues['shipping'][locale.languageCode]; String get shipBy => localizedValues['shipBy'][locale.languageCode]; diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart index e5381ccb..ca91efe2 100644 --- a/lib/widgets/others/app_scaffold_widget.dart +++ b/lib/widgets/others/app_scaffold_widget.dart @@ -38,6 +38,7 @@ class AppScaffold extends StatelessWidget { final bool isBottomBar; final Widget floatingActionButton; final bool isPharmacy; + final bool showPharmacyCart; final String title; final String description; final bool isShowDecPage; @@ -61,6 +62,7 @@ class AppScaffold extends StatelessWidget { this.baseViewModel, this.floatingActionButton, this.isPharmacy = false, + this.showPharmacyCart = true, this.title, this.description, this.isShowDecPage = true, @@ -84,6 +86,7 @@ class AppScaffold extends StatelessWidget { appBarIcons: appBarIcons, showHomeAppBarIcon: showHomeAppBarIcon, isPharmacy: isPharmacy, + showPharmacyCart: showPharmacyCart, isShowDecPage: isShowDecPage, ) : null, @@ -119,6 +122,7 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget { final bool showHomeAppBarIcon; final List appBarIcons; final bool isPharmacy; + final bool showPharmacyCart; final bool isShowDecPage; AppBarWidget( @@ -126,6 +130,7 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget { this.showHomeAppBarIcon, this.appBarIcons, this.isPharmacy = true, + this.showPharmacyCart = true, this.isShowDecPage = true}); @override @@ -157,7 +162,7 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget { ), centerTitle: true, actions: [ - isPharmacy + (isPharmacy && showPharmacyCart) ? IconButton( icon: Icon(Icons.shopping_cart), color: Colors.white,