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.
70 lines
1.7 KiB
Dart
70 lines
1.7 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
|
|
|
class AppMap extends StatefulWidget {
|
|
final CameraPositionCallback onCameraMove;
|
|
Map initialCamera;
|
|
|
|
late AppMapState _state;
|
|
final Function onMapCreated;
|
|
|
|
AppMap(this.initialCamera,
|
|
{required this.onCameraMove, required this.onMapCreated});
|
|
|
|
@override
|
|
State<StatefulWidget> createState() => _state = AppMapState();
|
|
|
|
moveTo({required CameraPosition cameraPostion}) {
|
|
_state.googleMapController
|
|
.animateCamera(CameraUpdate.newCameraPosition(cameraPostion));
|
|
}
|
|
}
|
|
|
|
class AppMapState extends State<AppMap> {
|
|
bool isHuawei = false;
|
|
|
|
Completer<GoogleMapController> _googleMapControllerComp = Completer();
|
|
late GoogleMapController googleMapController;
|
|
|
|
checkIsHuawei() async {
|
|
setState(() {});
|
|
}
|
|
|
|
@override
|
|
void initState() {}
|
|
|
|
@override
|
|
void dispose() {
|
|
super.dispose();
|
|
googleMapController.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (isHuawei == null) return CircularProgressIndicator();
|
|
return googleMap();
|
|
}
|
|
|
|
Widget googleMap() {
|
|
return GoogleMap(
|
|
mapType: MapType.normal,
|
|
zoomControlsEnabled: true,
|
|
myLocationButtonEnabled: true,
|
|
myLocationEnabled: true,
|
|
initialCameraPosition: CameraPosition.fromMap(widget.initialCamera) ??
|
|
const CameraPosition(
|
|
target: LatLng(-26.1711459, 27.9002758), zoom: 2.0),
|
|
onCameraMove: widget.onCameraMove,
|
|
onMapCreated: (GoogleMapController controller) {
|
|
googleMapController = controller;
|
|
_googleMapControllerComp.complete(controller);
|
|
widget.onMapCreated();
|
|
},
|
|
);
|
|
}
|
|
}
|