Flutter Maps Overlay问题

时间:2018-10-16 14:45:49

标签: google-maps dart flutter

我正在为使用Google Maps的应用开发Flutter。该应用程序由2个活动组成:列表和地图。

本段仅是一些背景信息。您可以跳过它。通常,Google Maps可以通过点击打开为动态地图的静态地图来调用地图。静态地图只是一个小部件。该应用需要在单个活动上直接显示全屏地图。

我们面临的问题与重叠广告有关。来自medium.com的Auby Khan提供了显示全屏地图所需的代码。因此,我们用一个按钮创建了第一个活动,该按钮将您导航到第二个活动:

          new IconButton(
            icon: new Icon(Icons.map),
            tooltip: 'openMap',
            onPressed: (){
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => ControlParkMapNormal()),
              );
            },
          ),

在第二个活动中,它将显示地图:

final size = MediaQueryData.fromWindow(ui.window).size;
final GoogleMapOverlayController controller =
GoogleMapOverlayController.fromSize(
  width: size.width,
  height: size.height,
);
final mapController = controller.mapController;
final Widget mapWidget = GoogleMapOverlay(controller: controller);

class ControlParkMapNormal extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: new Scaffold(
        appBar: AppBar(
          title: Text("ControlPark"),
          actions: <Widget>[
            IconButton(
              icon: const Icon(Icons.list),
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => ControlPark()),
                );
              },
            ),
          ],
        ),
        body: MapsDemo(mapWidget, controller.mapController),
      ),
      navigatorObservers: <NavigatorObserver>[controller.overlayController],
    );
  }
}

class MapsDemo extends StatelessWidget {

  MapsDemo(this.mapWidget, this.controller);

  final Widget mapWidget;
  final GoogleMapController controller;

  @override
  Widget build(BuildContext context) {
    return Center(child: mapWidget);
  }
}

从活动1>活动2>活动1导航时,地图将保持显示状态。该地图似乎永久地覆盖在所有后续活动上。从活动1>活动2>活动1>活动2的转换会产生此错误:

  

I / flutter(12701):引发了另一个异常:'package:flutter / src / widgets / navigator.dart':失败的断言:1303行pos 14:'observer.navigator == null':不正确。

这是观察者导航器的代码块:

  @override
  void initState() {
    super.initState();
    for (NavigatorObserver observer in widget.observers) {
      assert(observer.navigator == null);
      observer._navigator = this;
    }

有什么办法解决这个问题?

0 个答案:

没有答案