У меня есть список мест, которые я хочу отобразить на карте, а также отфильтровать по категории. Я могу получить местоположения и маркеры мест, но не знаю, как их отфильтровать, например, если выбран вариант из раскрывающегося списка.
Это то, что у меня есть:
getActiveLocations() {
Stream<List<LocationModel>> locations =
_locationController.getActiveLocations();
locations.listen((location) async {
print(location);
for (var i = 0; i < location.length; i++) {
String name = location[i].name;
double lat = location[i].geometry['location']['lat'];
double lng = location[i].geometry['location']['lng'];
String icon = location[i].icon;
final http.Response response = await http.get(icon);
_markers.add(
Marker(
icon: BitmapDescriptor.fromBytes(response.bodyBytes),
markerId: MarkerId(name),
position: LatLng(lat, lng),
onTap: () => _showModalSheet(location[i]),
),
);
}
});
}
Stream<List<LocationModel>> getActiveLocations() {
final CollectionReference ref = _db.collection('locations');
try {
return ref.snapshots().map(
(QuerySnapshot list) => list.documents
.map((DocumentSnapshot doc) => LocationModel.fromFirestore(doc))
.toList(),
);
} catch (err) {
print(err);
}
return null;
}
Единственное, о чем я могу думать, это установить значение состояния onTap, а затем добавить к _markers
, только если местоположение содержит значение.