import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:prosapp_web_app/models/city.dart'; import 'package:prosapp_web_app/models/country_entity.dart'; class CitiesProvider extends ChangeNotifier { List cities = []; bool isLoading = true; final _citiesCollection = FirebaseFirestore.instance.collection('countries v2'); CitiesProvider() { getCities(); } getCoordsOfCity(String cityName) { if (cities.isEmpty) return null; for (var city in cities) { if (city.cityName == cityName) { return city.coordsOfCity; } } return null; } getCities() async { try { final querySnapshot = await _citiesCollection.doc('Colombia').get(); final data = querySnapshot.data(); final country = CountryEntity.fromDocument(data as Map); for (var region in country.regions) { for (var city in region.cities) { cities.add(City( cityName: city.name, coordsOfCity: city.coords, stateOfCity: region.name, countryOfCity: country.name, )); } } cities.sort((a, b) => a.cityName.compareTo(b.cityName)); } catch (e) { print('Error obteniendo ciudades: $e'); } finally { isLoading = false; notifyListeners(); } } }