import 'dart:async'; import 'dart:io'; 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_hmsavailability/huawei_hmsavailability.dart'; // import 'package:huawei_map/map.dart' as hmsMap; class AppMap extends StatefulWidget { CameraPositionCallback onCameraMove; Map initialCamera; AppMapState _state; Function onMapCreated; Function onCameraIdle; AppMap(this.initialCamera, {this.onCameraMove, this.onMapCreated, this.onCameraIdle}); @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 = false; Completer _googleMapControllerComp = Completer(); GoogleMapController googleMapController; // Completer _huaweiMapControllerComp = Completer(); // hmsMap.HuaweiMapController _huaweiMapController; // HmsApiAvailability hmsApiAvailability; // checkIsHuawei() async { // await hmsApiAvailability.isHMSAvailable().then((value) { // isHuawei = value == 0 ? true : false; // }); // 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() => googleMap(); Widget googleMap() { return GoogleMap( mapType: MapType.normal, zoomControlsEnabled: true, myLocationButtonEnabled: true, myLocationEnabled: true, initialCameraPosition: CameraPosition.fromMap(widget.initialCamera), onCameraMove: widget.onCameraMove, onMapCreated: (GoogleMapController controller) { googleMapController = controller; _googleMapControllerComp.complete(controller); widget.onMapCreated(); }, onCameraIdle: widget.onCameraIdle, ); } // 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); // widget.onMapCreated(); // }, // onCameraIdle: () { // print("onCameraIdle"); // widget.onCameraIdle(); // }, // ); // } }