flutter - 在 Flutter 中有没有办法切换谷歌地图上标记的可见性?
问题描述
标记属性设置为最终属性,因此不能更改。没有 setter 方法可以在不尝试重新创建所有标记的情况下更改它们的值。
我尝试了以下方法:
markers.update(_markerId, (Marker m) {
print(m.markerId);
return Marker(markerId: MarkerId("2"), infoWindow: InfoWindow(title: "Test"));
});
上面的代码只是隐藏了最后一个标记,没有别的
解决方案
您还不能更改现有标记对象的属性,因为它们被声明为最终的。
您可以做的是在另一个标记中创建该标记对象的副本,然后更改属性并用它替换。像这样的东西。
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
推荐阅读
- qemu - 如何在 arm64 / aarch64 上将 QEMU 来宾的退出代码传达给主机(相当于 isa-debug-exit)
- .net-core - .net core 2.1 lambda 使用自定义根 CA
- c++ - 当命名空间和命名空间中的枚举共享名称时,为什么 C++ typedef 会抛出错误?
- antlr4 - ANTLR4 c++ target getLine()/getCharPositioninLine() in visitor
- c++ - 使用概念启用类模板的成员函数
- excel - 使用逗号分隔的字符串作为参数的 SUMIFS
- kendo-grid - Angular Grid Detail 的 Kendo UI 展开/折叠按钮要向右移动?
- xml - 值列表的 xslt 转换
- node.js - nodemon npm 顺序启动脚本
- python - 如何为不同的蜘蛛设置相同的缓存文件夹,现在scrapy在缓存目录中为每个蜘蛛创建子文件夹