import 'package:flutter/cupertino.dart'; import 'package:stackwallet/models/contact_address_entry.dart'; import 'package:stackwallet/utilities/address_utils.dart'; import 'package:stackwallet/utilities/enums/coin_enum.dart'; class AddressEntryData extends ChangeNotifier { late int id; AddressEntryData(this.id); String? _addressLabel; String? _address; Coin? _coin; String? get addressLabel => _addressLabel; set addressLabel(String? addressLabel) { _addressLabel = addressLabel; notifyListeners(); } String? get address => _address; set address(String? address) { _address = address; notifyListeners(); } Coin? get coin => _coin; set coin(Coin? coin) { _coin = coin; notifyListeners(); } bool get isEmpty { if (address != null && address!.isNotEmpty) { return false; } if (addressLabel != null && addressLabel!.isNotEmpty) { return false; } if (coin != null) { return false; } return true; } bool get isValid { if (_address == null || coin == null || _addressLabel == null) { return false; } if (_address!.isEmpty || _addressLabel!.isEmpty) { return false; } return isValidAddress; } bool get isValidAddress { if ( coin == null) { return true; } if (_address == null) { return false; } return AddressUtils.validateAddress(_address!, _coin!); } ContactAddressEntry buildAddressEntry() { return ContactAddressEntry( coin: coin!, address: address!, label: addressLabel!); } @override String toString() { return "AddressEntryData: { addressLabel: $addressLabel, address: $address, coin: ${coin?.name} }"; } }