From 3f178e3e3fa25b5b1a867dc5af2ebe87b484eea0 Mon Sep 17 00:00:00 2001
From: Zohaib Iqbal Kambrani <>
Date: Mon, 20 Sep 2021 13:03:35 +0300
Subject: [PATCH] Google_Huawei Map -> AppMap
---
android/app/agconnect-services.json | 14 +++
android/app/build.gradle | 1 +
android/app/src/main/AndroidManifest.xml | 2 +
android/build.gradle | 4 +
.../NewCMC/new_cmc_step_tow_page.dart | 34 ++-----
lib/widgets/app_map/google_huawei_map.dart | 94 +++++++++++++++++++
pubspec.yaml | 1 +
7 files changed, 125 insertions(+), 25 deletions(-)
create mode 100644 android/app/agconnect-services.json
create mode 100644 lib/widgets/app_map/google_huawei_map.dart
diff --git a/android/app/agconnect-services.json b/android/app/agconnect-services.json
new file mode 100644
index 00000000..cfdaf83b
--- /dev/null
+++ b/android/app/agconnect-services.json
@@ -0,0 +1,14 @@
+{
+ "client":{
+ "appType":"1",
+ "cp_id":"2640966000002322881",
+ "product_id":"736430079244816567",
+ "client_id":"563735388191982656",
+ "client_secret":"650C7C799812AFFD53A10C7756CF05FB9F215A7E49032ABA8EBF3E14B77535CF",
+ "project_id":"736430079244816567",
+ "app_id":"102857389",
+ "api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI",
+ "package_name":"com.ejada.hmg"
+ },
+ "configuration_version":"1.0"
+}
\ No newline at end of file
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 5fd11eb3..bfe7fde4 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -22,6 +22,7 @@ if (flutterVersionName == null) {
}
apply plugin: 'com.android.application'
+apply plugin: 'com.huawei.agconnect'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 7d2259c5..867a4e03 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -22,6 +22,8 @@
+
+
diff --git a/android/build.gradle b/android/build.gradle
index c0fc03b3..4ef0d731 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -3,6 +3,8 @@ buildscript {
repositories {
google()
jcenter()
+ maven { url 'https://developer.huawei.com/repo/' }
+
// maven {
// url "https://dl.bintray.com/kotlin/kotlin-eap/"
// }
@@ -12,6 +14,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:3.5.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8'
+ classpath 'com.huawei.agconnect:agcp:1.4.2.301'
}
}
@@ -20,6 +23,7 @@ allprojects {
google()
// jcenter()
mavenCentral()
+ maven { url 'https://developer.huawei.com/repo/' }
}
}
diff --git a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart
index 4525d89b..24c06bc4 100644
--- a/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart
+++ b/lib/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/new_cmc_step_tow_page.dart
@@ -11,6 +11,7 @@ import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/location_util.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
+import 'package:diplomaticquarterapp/widgets/app_map/google_huawei_map.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/select_location_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@@ -46,9 +47,7 @@ class _NewCMCStepTowPageState extends State {
bool showCurrentLocation = false;
AppSharedPreferences sharedPref = AppSharedPreferences();
- Completer _controller = Completer();
- GoogleMapController googleMapController;
- static CameraPosition _kGooglePlex = CameraPosition(
+ static CameraPosition cameraPosition = CameraPosition(
target: LatLng(37.42796133580664, -122.085749655962),
zoom: 14.4746,
);
@@ -86,18 +85,11 @@ class _NewCMCStepTowPageState extends State {
setMap() {
setState(() {
- _kGooglePlex = CameraPosition(
+ cameraPosition = CameraPosition(
target: currentPostion,
zoom: 14.4746,
);
- googleMapController.animateCamera(
- CameraUpdate.newCameraPosition(
- CameraPosition(
- target: currentPostion,
- zoom: 16,
- ),
- ),
- );
+ appMap.moveTo(cameraPostion: cameraPosition);
});
}
@@ -130,7 +122,8 @@ class _NewCMCStepTowPageState extends State {
setMap();
}
}
-
+
+ AppMap appMap;
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
@@ -218,18 +211,9 @@ class _NewCMCStepTowPageState extends State {
child: Stack(
alignment: Alignment.center,
children: [
- GoogleMap(
- mapType: MapType.normal,
- zoomControlsEnabled: false,
- myLocationButtonEnabled: true,
- myLocationEnabled: true,
- initialCameraPosition: _kGooglePlex,
- onCameraMove: ((_position) => _updatePosition(_position)),
- onMapCreated: (GoogleMapController controller) {
- googleMapController = controller;
- _controller.complete(controller);
- },
- ),
+ appMap = AppMap(cameraPosition.toMap(), onCameraMove: (camera){
+ _updatePosition(camera);
+ }),
Icon(
Icons.place,
color: CustomColors.accentColor,
diff --git a/lib/widgets/app_map/google_huawei_map.dart b/lib/widgets/app_map/google_huawei_map.dart
new file mode 100644
index 00000000..fe991ad8
--- /dev/null
+++ b/lib/widgets/app_map/google_huawei_map.dart
@@ -0,0 +1,94 @@
+
+import 'dart:async';
+
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_hms_gms_availability/flutter_hms_gms_availability.dart';
+import 'package:google_maps_flutter/google_maps_flutter.dart';
+import 'package:huawei_map/map.dart' as hmsMap;
+
+
+class AppMap extends StatefulWidget{
+ CameraPositionCallback onCameraMove;
+ Map initialCamera;
+
+ AppMapState _state;
+
+ AppMap(this.initialCamera, {this.onCameraMove});
+
+ @override
+ State createState() => _state = AppMapState();
+
+
+ moveTo({@required CameraPosition cameraPostion}){
+ if(_state.isHuawei){
+ final cameraJson = cameraPostion.toMap();
+ final camera = hmsMap.CameraPosition.fromMap(cameraJson);
+ _state._huaweiMapController.animateCamera(hmsMap.CameraUpdate.newCameraPosition(camera));
+ }else{
+ _state.googleMapController.animateCamera(CameraUpdate.newCameraPosition(cameraPostion));
+ }
+ }
+}
+
+class AppMapState extends State{
+
+ bool isHuawei;
+
+ Completer _googleMapControllerComp = Completer();
+ GoogleMapController googleMapController;
+
+ Completer _huaweiMapControllerComp = Completer();
+ hmsMap.HuaweiMapController _huaweiMapController;
+
+ checkIsHuawei() async{
+ isHuawei = await FlutterHmsGmsAvailability.isHmsAvailable;
+ setState(() {});
+ }
+ @override
+ void initState() {
+ checkIsHuawei();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ if(isHuawei == null)
+ return CircularProgressIndicator();
+ return map();
+ }
+
+ Widget map() => isHuawei ? huaweiMap() : googleMap();
+
+
+ googleMap(){
+ return
+ GoogleMap(
+ mapType: MapType.normal,
+ zoomControlsEnabled: false,
+ myLocationButtonEnabled: true,
+ myLocationEnabled: true,
+ initialCameraPosition: CameraPosition.fromMap(widget.initialCamera),
+ onCameraMove: widget.onCameraMove,
+ onMapCreated: (GoogleMapController controller) {
+ googleMapController = controller;
+ _googleMapControllerComp.complete(controller);
+ },
+ );
+ }
+
+ Widget huaweiMap(){
+ return hmsMap.HuaweiMap(
+ mapType: hmsMap.MapType.normal,
+ zoomControlsEnabled: false,
+ myLocationButtonEnabled: true,
+ myLocationEnabled: true,
+ initialCameraPosition: hmsMap.CameraPosition.fromMap(widget.initialCamera),
+ onCameraMove: (camera) => widget.onCameraMove(CameraPosition.fromMap(camera.toMap())),
+ onMapCreated: (controller){
+ _huaweiMapController = controller;
+ _huaweiMapControllerComp .complete(controller);
+ },
+ );
+ }
+
+}
\ No newline at end of file
diff --git a/pubspec.yaml b/pubspec.yaml
index bbf05ea3..0d6b4756 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -87,6 +87,7 @@ dependencies:
google_maps_flutter: ^1.0.3
+ huawei_map: ^5.0.3+303
# Qr code Scanner TODO fix it
# barcode_scanner: ^1.0.1