Google_Huawei Map -> AppMap

merge-requests/390/merge
Zohaib Iqbal Kambrani 4 years ago
parent 32462ff5ba
commit 3f178e3e3f

@ -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"
}

@ -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"

@ -22,6 +22,8 @@
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/>
<!-- Wifi Permissions-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

@ -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/' }
}
}

@ -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<NewCMCStepTowPage> {
bool showCurrentLocation = false;
AppSharedPreferences sharedPref = AppSharedPreferences();
Completer<GoogleMapController> _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<NewCMCStepTowPage> {
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<NewCMCStepTowPage> {
setMap();
}
}
AppMap appMap;
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
@ -218,18 +211,9 @@ class _NewCMCStepTowPageState extends State<NewCMCStepTowPage> {
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,

@ -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<StatefulWidget> 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<AppMap>{
bool isHuawei;
Completer<GoogleMapController> _googleMapControllerComp = Completer();
GoogleMapController googleMapController;
Completer<hmsMap.HuaweiMapController> _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);
},
);
}
}

@ -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

Loading…
Cancel
Save