Я хочу показать маркеры следов и изменить их на маркеры событий и обратно при нажатии кнопки.
Когда я очищаю маркеры, размер равен 0, но они не удаляются с карты.
Поэтому, когда я добавляю новые, ничего не происходит.
Мой initState
@override
void initState() {
super.initState();
_listToMarkersTrails();
isTrailsMode = true;
message = "Go to Events";
}
Моя карта в стопке
Stack(
children: <Widget>[
map,
Positioned(top: 5, right: 5, child: _getButton())
],
),
Мой метод _getbutton ()
RaisedButton _getButton() {
if (isTrailsMode) {
return RaisedButton(
color: Colors.green,
onPressed: () => _changeMarkers(),
child: Text("Change to Events"),
);
} else {
return RaisedButton(
color: Colors.blue,
onPressed: () => _changeMarkers(),
child: Text("Change to Trails"),
);
}
}
Мой метод _changeMarkers ()
void _changeMarkers() {
setState(() => map.markers.clear());
if (isTrailsMode) _listToMarkersTrails();
else _listToMarkersEvents();
setState(() => isTrailsMode = !isTrailsMode);
}
Мой список ToMarkers - методы
void _listToMarkersTrails() {
for (var i = 0; i < widget.trailList.length; i++) {
setState(() {
map.markers.add(Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(50.0),
infoWindow: InfoWindow(
title: widget.trailList[i].trailName,
onTap: () => _navigateToTrail(widget.trailList[i])),
markerId: MarkerId("id{$i}_trails"),
position: widget.trailList[i].markers[0].position,
));
});
}
}
void _listToMarkersEvents() {
for (var i = 0; i < widget.eventList.length; i++) {
setState(() {
map.markers.add(Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(150.0),
infoWindow: InfoWindow(
title: widget.eventList[i].date,
onTap: () => _navigateToEvent(widget.eventList[i])),
markerId: MarkerId("id{$i}_events"),
position: widget.eventList[i].trail.markers[0].position,
));
});
}
}
Когда я проверяю значения после очистки, markers.lenght = 0, но ничего не удаляется из маркеров на карте.
Что я должен добавить? Контроллер?
Заранее спасибо!
EDIT
Я забыл добавить, это Флаттер (дротик).