Функция 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. После того, как я изменил его, он работал нормально. Извините, ребята, дело закрыто!

0 ответов

Другие вопросы по тегам