首页 > 解决方案 > google_maps_flutter 出现问题,标记 onTap(){} 不起作用

问题描述

好的,我对 Flutter 语言还很陌生,我必须用谷歌地图制作一个使用标记的应用程序,当你点击标记的信息窗口时,它必须打开一个包含该标记信息的新页面,所以我建立新页面,将标记放置在地图中并使用 onTap:(){} 移动到新页面,但是当我运行应用程序并单击信息窗口时,没有任何反应。

起初它在上下文行显示一个错误,我写了一个“BuildContext context;” 并且错误已解决,但信息窗口仍然不执行任何操作,我尝试移动“BuildContext 上下文;” 在标记之外但仍然相同,我试图在互联网上找到其他解决方案,但我发现的唯一一个是在这个网站上,我不明白解决方案是什么,或者对我不起作用。

Marker servicioej= Marker(
  markerId: MarkerId('marker1'),
  position: LatLng(-32.3162695, -58.0949139),
  infoWindow: InfoWindow(
    title: 'Restaurante',
    onTap: () {
      BuildContext context;
        Navigator.push(
                    context,
                MaterialPageRoute(builder: (context) => ServicioStateful()),
                );
    }),
  icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue),
);

我只需要当我点击标记时它会将我移动到另一个页面,我从昨天开始就遇到了这个问题,我可以使用一些帮助,抱歉,如果有一些拼写错误我尽力让它可以理解 xD

标签: google-mapsflutterdart

解决方案


BuildContext将方法提供的引用保存build在变量中,并将该上下文变量传递给Navigator.

class MapScreen extends StatefulWidget{
   ...
}

class MapScreenState extends State<MapScreen>{
  BuildContext _myContext;

  @override
  Widget build(BuildContext context) {
    _myContext = context;

    Marker servicioej= Marker(
      markerId: MarkerId('marker1'),
      position: LatLng(-32.3162695, -58.0949139),
      infoWindow: InfoWindow(
        title: 'Restaurante',
        onTap: () {
           Navigator.push(_myContext, MaterialPageRoute(builder: (context) => ServicioStateful()));
        }),
      icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue),
    );

    return Scaffold(
      ...
    );
  }
}

推荐阅读