google_maps_flutter问题,标记onTap(){}不起作用

时间:2019-09-03 23:50:39

标签: google-maps flutter dart

好吧,我是Flutter语言的新手,我必须使用带有标记的google maps制作一个应用,当您在标记的信息窗口中单击时,它必须打开一个包含该标记信息的新页面,因此我建立了新页面,将标记放置在地图上,并使用onTap:(){}移到了新页面,但是当我运行应用程序并单击信息窗口时,什么也没发生。

起初,它在上下文行上显示了一个错误,我编写了一个“ BuildContext context;”。并且错误已解决,但“信息”窗口仍然不起作用,我尝试移动“ BuildContext上下文”;在标记之外,但仍然相同,我试图在Internet上找到其他解决方案,但我发现的唯一解决方案是在此站点上,我不知道该解决方案是什么,或者对我不起作用。

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

1 个答案:

答案 0 :(得分:0)

在变量中保存由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(
      ...
    );
  }
}