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.
56 lines
2.0 KiB
Dart
56 lines
2.0 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
|
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
|
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
|
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
|
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
|
import 'package:hmg_patient_app_new/theme/colors.dart';
|
|
|
|
class GMSMap extends StatelessWidget{
|
|
Completer<GoogleMapController>? controller;
|
|
final CameraPosition currentLocation;
|
|
final Function(CameraPosition) onCameraMoved;
|
|
final VoidCallback onCameraIdle;
|
|
final MapType mapType;
|
|
final bool compassEnabled;
|
|
final bool myLocationEnabled;
|
|
final bool showCenterMarker;
|
|
|
|
|
|
GMSMap({super.key, required this.currentLocation ,required this.onCameraMoved,required this.onCameraIdle,
|
|
this.mapType = MapType.normal,this.compassEnabled = false,this.showCenterMarker = false,
|
|
this.myLocationEnabled = true,Completer<GoogleMapController>? inputController}){
|
|
controller = inputController ?? Completer<GoogleMapController>();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Stack(
|
|
children: [
|
|
GoogleMap(
|
|
mapType: mapType,
|
|
zoomControlsEnabled: true,
|
|
myLocationEnabled: myLocationEnabled,
|
|
myLocationButtonEnabled: false,
|
|
compassEnabled: compassEnabled,
|
|
initialCameraPosition: currentLocation,
|
|
onCameraMove: (value) => onCameraMoved(value),
|
|
onCameraIdle: ()=>onCameraIdle(),
|
|
// padding: EdgeInsets.only(bottom: 300.h),
|
|
onMapCreated: (GoogleMapController controller) {
|
|
this.controller?.complete(controller);
|
|
},
|
|
),
|
|
Visibility(
|
|
visible: showCenterMarker,
|
|
child: Align(
|
|
alignment: Alignment.center,
|
|
child: Icon(Icons.location_pin, size: 36.h, color: AppColors.primaryRedColor).paddingOnly(bottom: 24.h),
|
|
),
|
|
)
|
|
],
|
|
);
|
|
}
|
|
} |