1

标记属性设置为最终属性,因此不能更改。没有 setter 方法可以在不尝试重新创建所有标记的情况下更改它们的值。

我尝试了以下方法:

  markers.update(_markerId, (Marker m) {
      print(m.markerId);
      return Marker(markerId: MarkerId("2"), infoWindow: InfoWindow(title: "Test"));
    });

上面的代码只是隐藏了最后一个标记,没有别的

4

1 回答 1

1

您还不能更改现有标记对象的属性,因为它们被声明为最终的。

您可以做的是在另一个标记中创建该标记对象的副本,然后更改属性并用它替换。像这样的东西。

 final Marker marker = markers[selectedMarker];
    setState(() {
      markers[selectedMarker] = marker.copyWith(
        visibleParam: !marker.visible,
      );
    });

致谢:来自官方谷歌地图颤振插件示例的代码片段。

更多示例在这里 https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/example/lib

于 2019-09-10T10:06:12.340 回答