import 'package:flutter/cupertino.dart'; import 'package:stackwallet/models/isar/models/contact_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() ..coinName = coin!.name ..address = address! ..other = null ..label = addressLabel!; } @override String toString() { return "AddressEntryData: { addressLabel: $addressLabel, address: $address, coin: ${coin?.name} }"; } }