This commit is contained in:
Felipe
2024-03-13 13:59:33 -05:00
parent 312cc3d863
commit a25bc6a987
26 changed files with 684 additions and 60 deletions
@@ -0,0 +1,6 @@
import 'package:city_repository/city_repository.dart';
import 'package:city_repository/src/models/city_ui.dart';
abstract class CityRepository {
Future<List<CityUi>> getCities();
}
@@ -0,0 +1,44 @@
import 'dart:developer';
import 'package:city_repository/city_repository.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class FirebaseCityRepository implements CityRepository {
final citiesCollection =
FirebaseFirestore.instance.collection('countries v2');
List<CityUi>? _cities;
@override
Future<List<CityUi>> getCities() async {
if (_cities != null) {
return _cities!;
}
final List<CityUi> cities = [];
try {
final doc = await citiesCollection.doc("Colombia").get();
final data = doc.data();
final country = CountryEntity.fromDocument(data as Map<String, dynamic>);
for (var region in country.regions) {
for (var city in region.cities) {
cities.add(CityUi(
cityName: city.name,
coordsOfCity: city.coords,
stateOfCity: region.name,
countryOfCity: country.name));
}
}
} catch (e) {
log(e.toString());
rethrow;
}
_cities = cities;
return cities;
}
}