skip to Main Content

Here’s the code that I have so far

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

class TempView extends StatefulWidget {
  const TempView({Key? key}) : super(key: key);

  @override
  State<TempView> createState() => _TempViewState();
}

class _TempViewState extends State<TempView> {
  final Completer<GoogleMapController> _controller =
      Completer<GoogleMapController>();

  static const CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  static const CameraPosition _kLake = CameraPosition(
      bearing: 192.8334901395799,
      target: LatLng(37.43296265331129, -122.08832357078792),
      tilt: 59.440717697143555,
      zoom: 19.151926040649414);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: GoogleMap(
        onTap: (argument) => print("tapped"),
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _goToTheLake,
        label: const Text('To the lake!'),
        icon: const Icon(Icons.directions_boat),
      ),
    );
  }

  Future<void> _goToTheLake() async {
    final GoogleMapController controller = await _controller.future;
    controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
  }
}

It’s the same as the code on the pub.dev page for the google_maps_flutter widget, except I added an onTap.

For some reason the onTap never fires! I’ve even tried adding custom gesture recognisers into the gestureRecognizers set, like the EagerGestureRecognizer and the TapGestureRecognizer.

I’m on Flutter 3.7 macOS with Apple M1.

Why isn’t it working, and how can I get around this?

2

Answers


  1. Wrap GoogleMap widget with InkWell Widget and use its property of onTap, it will work.

    InkWell(
    onTap: () => ,
    child:
    ),

    Login or Signup to reply.
  2. I ran your code and it seems to run just fine. tapped gets printed every time i tap on map.

    Please make sure your tap is in GoogleMap region and that no other widget is overlaying if this isn’t the whole code.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search