Untitled
unknown
plain_text
5 months ago
6.4 kB
3
Indexable
import 'package:flutter/cupertino.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:woozy_search/woozy_search.dart'; import '../../../../src/find/domain/entities/charger.dart'; import '../../../../src/find/domain/entities/charger_station.dart'; import '../../../../src/find/domain/entities/filter.dart'; class ChargeStationsProvider extends ChangeNotifier { List<ChargeStation>? _favoriteChargeStations; List<ChargeStation>? _chargeStations; List<ChargeStation>? _filteredChargeStations; final Woozy<ChargeStation> _searcher = Woozy<ChargeStation>(); List<ChargeStation>? get chargeStations => _filteredChargeStations ?? _chargeStations; List<ChargeStation>? get favoriteChargeStations => _favoriteChargeStations; void initChargeStations(List<ChargeStation> chargeStations) { _chargeStations = chargeStations; _filteredChargeStations = chargeStations; notifyListeners(); _searcher .setEntries(chargeStations.map((station) => station.name).toList()); notifyListeners(); } void initFavoriteChargeStations(List<ChargeStation> favoriteChargeStations) { if (_favoriteChargeStations != favoriteChargeStations) { _favoriteChargeStations = favoriteChargeStations; } notifyListeners(); } set favoriteChargeStations(List<ChargeStation>? favoriteChargeStations) { if (_favoriteChargeStations != favoriteChargeStations) { _favoriteChargeStations = favoriteChargeStations; Future.delayed(Duration.zero, notifyListeners); } } ChargeStation? _favoriteChargeStationItem; ChargeStation? get favoriteChargeStationItem => _favoriteChargeStationItem; void selectFavoriteChargeStation(ChargeStation? favoriteChargeStationItem) { _favoriteChargeStationItem = favoriteChargeStationItem; notifyListeners(); } set favoriteChargeStationItem(ChargeStation? favoriteChargeStationItem) { if (_favoriteChargeStationItem != favoriteChargeStationItem) { _favoriteChargeStationItem = favoriteChargeStationItem; Future.delayed(Duration.zero, notifyListeners); } } bool isFavoriteChargeStations(ChargeStation chargerStation) { if (_favoriteChargeStations != null) { for (var favoriteChargeStation in _favoriteChargeStations!) { if (favoriteChargeStation == chargerStation) { return true; } } } return false; } void addFavoriteChargeStations(String chargerStationId) { try { final ChargeStation chargerStation = _chargeStations!.firstWhere( (element) => element.id == chargerStationId, ); _favoriteChargeStations!.add(chargerStation); } catch (e) { return; } notifyListeners(); } void deleteFavoriteChargeStations(String chargerStationId) { try { final ChargeStation chargerStation = _favoriteChargeStations!.firstWhere( (element) => element.id == chargerStationId, ); _favoriteChargeStations!.remove(chargerStation); } catch (e) { return; } notifyListeners(); } void toggleFavoriteStatus(ChargeStation chargerStation) { if (isFavoriteChargeStations(chargerStation)) { deleteFavoriteChargeStations(chargerStation.id); } else { addFavoriteChargeStations(chargerStation.id); } notifyListeners(); } ChargeStation? _chargeStationItem; ChargeStation? get chargeStationItem => _chargeStationItem; void selectChargeStation(ChargeStation? chargerStationItem) { _chargeStationItem = chargerStationItem; notifyListeners(); } set chargeStationItem(ChargeStation? chargerStationItem) { if (_chargeStationItem != chargerStationItem) { _chargeStationItem = chargerStationItem; Future.delayed(Duration.zero, notifyListeners); } } Set<Marker> _markers = {}; Set<Marker> get markers => _markers; void initMarkers(Set<Marker> markers) { if (_markers != markers) { _markers = markers; } notifyListeners(); } // Function to get charger types and their counts Map<String, int> getChargerTypeCounts(List<Charger> chargers) { Map<String, int> chargerTypeCounts = {}; for (var charger in chargers) { if (chargerTypeCounts.containsKey(charger.chargerType)) { chargerTypeCounts[charger.chargerType] = chargerTypeCounts[charger.chargerType]! + 1; } else { chargerTypeCounts[charger.chargerType] = 1; } } return chargerTypeCounts; } // Search functionality using Woozy void searchChargeStations(String query) { if (query.isEmpty) { _filteredChargeStations = _chargeStations; // Show all if query is empty } else { final results = _searcher.search(query); _filteredChargeStations = results .map((result) => _chargeStations! .firstWhere((station) => station.name == result.text)) .toList(); } notifyListeners(); } Filter _filter = const Filter( minimumPower: 0, connectors: [], chargeStations: [], ); Filter get filter => _filter; void setFilter(Filter filter) { _filter = filter; notifyListeners(); } List<ChargeStation>? _filterListChargeStations; List<ChargeStation>? get filterListChargeStations => _filterListChargeStations; void setFilterListChargeStations(List<ChargeStation> chargeStations) { _filterListChargeStations = chargeStations; notifyListeners(); } set filterListChargeStations(List<ChargeStation>? filterListChargeStations) { if (_filterListChargeStations != filterListChargeStations) { _filterListChargeStations = filterListChargeStations; Future.delayed(Duration.zero, notifyListeners); } } // void filterChargeStations(int minimumPower, List<String> selectedConnectors) { // _filteredChargeStations = _chargeStations! // .where((station) { // return station.chargers.any((charger) { // final matchesPower = charger.power <= minimumPower; // final matchesConnector = selectedConnectors.contains(charger.chargerType); // return matchesPower && matchesConnector; // }); // }) // .toList(); // notifyListeners(); // } }
Editor is loading...
Leave a Comment