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