Функция Google_Maps_Flutter onTap не работает
Я использую пакет "google_maps_flutter 2.1.8" для нового проекта, но не могу заставить работать функцию "onTap". Даже не для того, чтобы что-то напечатать. После того, как я потратил целый день, пытаясь найти проблему, я думаю, мне нужна помощь сейчас. Нужно ли как-то активировать функцию. Я благодарен за любой совет! Мой текущий код выглядит так:
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_maps_controller/google_maps_controller.dart';
import 'package:test/SecondScreen.dart';
class Home extends StatefulWidget{
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
late GoogleMapController mapController; //controller for Google map
final Set<Marker> markers = new Set(); //markers for google map
static const LatLng showLocation = const LatLng(51.2333, 6.783333); //initial Location
late BuildContext _myContext; //Try OnTap Function Delete if not working
@override
Widget build(BuildContext context) {
_myContext = context; //Try OnTap Function Delete if not working
return Scaffold(
appBar: AppBar(
title: Text("Multiple Markers in Google Map"),
backgroundColor: Color.fromARGB(200, 13, 127, 229)
),
body: GoogleMap( //Map widget from google_maps_flutter package
zoomGesturesEnabled: true, //enable Zoom in, out on map
initialCameraPosition: CameraPosition( //inital position in map
target: showLocation, //initial position
zoom: 15.0, //initial zoom level
),
markers: getmarkers(), //markers to show on map
mapType: MapType.normal, //map type
onMapCreated: (controller) { //method called when map is created
setState(() {
mapController = controller;
});
},
),
);
}
//Markers Only
Set<Marker> getmarkers() { //markers to place on map
setState(() {
markers.add(Marker( //add first marker
markerId: MarkerId(showLocation.toString()),
position: showLocation, //position of marker
infoWindow: InfoWindow( //popup info
title: 'Marker Title First ',
snippet: 'My Custom Subtitle',
onTap: () {
Navigator.push(
_myContext,
MaterialPageRoute(builder: (context) => SecondScreen())
);
},
),
icon: BitmapDescriptor.defaultMarker, //Icon for Marker
));
markers.add(Marker( //add second marker
markerId: MarkerId(showLocation.toString()),
position: LatLng(51.23, 6.78), //position of marker
infoWindow: InfoWindow( //popup info
title: 'Marker Title Second ',
snippet: 'My Custom Subtitle',
onTap: (){
print('tap');
},
),
icon: BitmapDescriptor.defaultMarker, //Icon for Marker
));
markers.add(Marker( //add third marker
markerId: MarkerId(showLocation.toString()),
position: LatLng(51.22, 6.776), //position of marker
infoWindow: InfoWindow( //popup info
title: 'Marker Title Third ',
snippet: 'My Custom Subtitle',
),
icon: BitmapDescriptor.defaultMarker, //Icon for Marker
));
//add more markers here
});
return markers;
}
}
Мы нашли проблему, я присвоил нескольким маркерам один и тот же MarkerId. После того, как я изменил его, он работал нормально. Извините, ребята, дело закрыто!