typedAddress property

List typedAddress

Implementation

List<dynamic> get typedAddress {
  List<String> addressTypes = [
    'HOME',
    'WORK',
    'POSTAL',
    'DOM',
  ];
  List<String> addresses;
  List<String> types = [];
  List<dynamic> result = [];
  String _adr = '';

  addresses = getWordsOfPrefix("ADR");

  for (String adr in addresses) {
    try {
      if (version == "2.1" || version == "3.0") {
        _adr = RegExp(r'(?<=(;|:);).+$').firstMatch(adr)?.group(0) ?? '';
      } else if (version == "4.0") {
        _adr = RegExp(r'(?<=LABEL=").+(?=":;)').firstMatch(adr)?.group(0) ?? '';
      }
    } catch (e) {
      _adr = '';
    }

    if (_adr.startsWith(r';')) {
      //remove leading semicolon
      _adr = _adr.substring(1);
    }

    for (String type in addressTypes) {
      if (adr.toUpperCase().contains(type)) {
        types.add(type);
      }
    }

    result.add([
      _adr.split(';'),
      types
    ]); //Add splitted adress ( home;street;city -> [home, street, city]) along with its type
    _adr = '';
    types = [];
  }

  return result; // in this format: [[[adr_1_params], [adr_1_types]], [[adr_2_params], [adr_2_types]]]
}