You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PatientApp-KKUMC/lib/widgets/app_map/google_huawei_map.dart

113 lines
3.5 KiB
Dart

import 'dart:async';
3 years ago
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
2 years ago
import 'package:google_maps_flutter/google_maps_flutter.dart' as googlemap;
3 years ago
// import 'package:flutter_hms_gms_availability/flutter_hms_gms_availability.dart';
import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
2 years ago
import 'package:huawei_map/components/callbacks.dart';
import 'package:huawei_map/components/cameraPosition.dart' as cameraposition;
import 'package:huawei_map/map.dart' as hmsMap;
4 years ago
class AppMap extends StatefulWidget {
2 years ago
late CameraPositionCallback? onCameraMove;
late Map initialCamera;
2 years ago
AppMapState? _state;
late Function? onMapCreated;
late Function? onCameraIdle;
2 years ago
AppMap(this.initialCamera, { this.onCameraMove, this.onMapCreated, this.onCameraIdle});
@override
4 years ago
State<StatefulWidget> createState() => _state = AppMapState();
2 years ago
moveTo({ required CameraPosition cameraPostion}) {
if (_state!.isHuawei) {
final cameraJson = cameraPostion?.toMap();
final camera = hmsMap.CameraPosition.fromMap(cameraJson);
2 years ago
_state?._huaweiMapController.animateCamera(hmsMap.CameraUpdate.newCameraPosition(camera));
4 years ago
} else {
2 years ago
_state?.googleMapController.animateCamera(googlemap.CameraUpdate.newCameraPosition(cameraPostion! as googlemap.CameraPosition));
}
}
}
4 years ago
class AppMapState extends State<AppMap> {
bool isHuawei = false;
2 years ago
Completer<googlemap.GoogleMapController> _googleMapControllerComp = Completer();
late googlemap.GoogleMapController googleMapController;
Completer<hmsMap.HuaweiMapController> _huaweiMapControllerComp = Completer();
2 years ago
late hmsMap.HuaweiMapController _huaweiMapController;
2 years ago
late HmsApiAvailability hmsApiAvailability;
4 years ago
checkIsHuawei() async {
await hmsApiAvailability.isHMSAvailable().then((value) {
isHuawei = value == 0 ? true : false;
hmsMap.HuaweiMapInitializer.initializeMap();
});
print(isHuawei);
setState(() {});
}
4 years ago
@override
void initState() {
hmsApiAvailability = HmsApiAvailability();
3 years ago
if (Platform.isAndroid) checkIsHuawei();
super.initState();
}
@override
Widget build(BuildContext context) {
4 years ago
if (isHuawei == null) return CircularProgressIndicator();
return map();
}
Widget map() => isHuawei ? huaweiMap() : googleMap();
4 years ago
Widget googleMap() {
2 years ago
return googlemap.GoogleMap(
mapType: googlemap.MapType.normal,
4 years ago
zoomControlsEnabled: true,
4 years ago
myLocationButtonEnabled: true,
myLocationEnabled: true,
2 years ago
initialCameraPosition: googlemap.CameraPosition.fromMap(widget.initialCamera),
onCameraMove: widget.onCameraMove,
onMapCreated: (googlemap.GoogleMapController controller) {
4 years ago
googleMapController = controller;
_googleMapControllerComp.complete(controller);
2 years ago
widget.onMapCreated!();
},
onCameraIdle: () {
print("onCameraIdle");
widget.onCameraIdle!();
4 years ago
},
);
}
4 years ago
Widget huaweiMap() {
return hmsMap.HuaweiMap(
4 years ago
mapType: hmsMap.MapType.normal,
zoomControlsEnabled: false,
myLocationButtonEnabled: true,
myLocationEnabled: true,
initialCameraPosition: hmsMap.CameraPosition.fromMap(widget.initialCamera),
2 years ago
onCameraMove: (camera) => widget.onCameraMove!(CameraPosition.fromMap(camera.toMap())),
4 years ago
onMapCreated: (controller) {
_huaweiMapController = controller;
_huaweiMapControllerComp.complete(controller);
2 years ago
widget.onMapCreated!();
4 years ago
},
4 years ago
onCameraIdle: () {
print("onCameraIdle");
2 years ago
widget.onCameraIdle!();
4 years ago
},
);
}
4 years ago
}