import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:muaawana/models/my_addresses_response/address_response_model.dart'; import '../services/address_services.dart'; import '../utils/connection.dart'; class AddressProvider extends ChangeNotifier { AddressServices get service => GetIt.I(); List addressList = []; bool loader = false; bool isHomeSet =false; AddressResponseModel? homeAddress; testHomeSet(){ if(addressList.isNotEmpty){ bool hasHomeAddress = addressList.any((address) => address.home == true); hasHomeAddress? isHomeSet=true :isHomeSet = false; homeAddress = addressList .where((address) => address.home == true).first; } else { isHomeSet=false; } notifyListeners(); } Future fetchAddressList() async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); addressList = []; try { final fetchAddressListResult = await service.fetchAllAddresses(); if (fetchAddressListResult.statusCode == 200 || fetchAddressListResult.statusCode == 201 && fetchAddressListResult.data != null) { for (var element in fetchAddressListResult.data!){ addressList.add(element); } // ////print("here "); // ////print(fetchAddressListResult.data); // addressList.addAll(fetchAddressListResult.data!) ; testHomeSet(); loader = false; notifyListeners(); } else { loader = false; notifyListeners(); } } catch (e, stackTrace) { ////print(stackTrace); // log(stackTrace.toString()); loader = false; notifyListeners(); } } else { /// No Internet Connection loader = false; notifyListeners(); } } Future updateAddress( String address, int addressId, double altitude, double longitude) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final requestItemResult = await service.updateAddress( address, addressId, altitude, longitude); if (requestItemResult.statusCode == 200 || requestItemResult.statusCode == 201) { await fetchAddressList(); loader = false; notifyListeners(); return true; } else { loader = false; notifyListeners(); return false; } } catch (e, stackTrace) { log(stackTrace.toString()); loader = false; notifyListeners(); return false; } } else { /// No Internet Connection loader = false; notifyListeners(); return false; } } Future addAddress( String address, bool isHome, double altitude, double longitude) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final requestItemResult = await service.addAddress( address, isHome, altitude, longitude); if (requestItemResult.statusCode == 200 || requestItemResult.statusCode == 201) { await fetchAddressList(); loader = false; notifyListeners(); return true; } else { loader = false; notifyListeners(); return false; } } catch (e, stackTrace) { log(stackTrace.toString()); loader = false; notifyListeners(); return false; } } else { /// No Internet Connection loader = false; notifyListeners(); return false; } } }