【发布时间】:2021-07-31 18:46:51
【问题描述】:
我正在构建一个颤振应用程序并使用 BLoC 进行状态管理,用户可以在其中选择相机的当前位置,单击“确认”,然后会在该位置添加一个名为“dep”的标记(出发),然后他将能够添加另一个名为“dest”(目的地)的标记。 用户还可以点击“返回”并恢复到以前的状态,这意味着 id 必须删除他使用的最后一个标记。
这是我的谷歌地图小部件:
GoogleMap(
zoomControlsEnabled: false,
zoomGesturesEnabled: true,
myLocationEnabled: false,
mapType: MapType.normal,
initialCameraPosition: state.cameraPosition,
markers: mapBloc.markers,
onMapCreated: _onMapCreated,
onCameraMove: _onCameraMove,
),
这是我用来删除标记的代码(根据当前状态,markerID 将是“dep”或“dest”):
void removeMarker(String markerID) {
markers.remove(markers.firstWhere((Marker marker) => marker.markerId.value == markerID));
}
此屏幕截图来自将“dep”和“dest”都添加到地图后设置的标记:
此屏幕截图来自从地图中删除“dep”和“dest”后设置的标记:
问题是,当我删除两个标记时,第二个(dest)从地图中成功删除(在执行地图更新功能后),但第一个(dep)没有被删除,它只会当我尝试“添加”一个新的“dep”位置时更新,然后“dep”标记会将其位置更新为新位置。
【问题讨论】:
标签: flutter google-maps-markers flutter-bloc