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