resolveAddress method

  1. @override
Future<ResolvedAddress?> resolveAddress(
  1. AddressSuggestion suggestion, {
  2. String? localeTag,
  3. int? requestId,
})
override

Implementation

@override
Future<ResolvedAddress?> resolveAddress(
  AddressSuggestion suggestion, {
  String? localeTag,
  int? requestId,
}) async {
  final Map<String, Object?> arguments = suggestion.toMap();
  arguments['locale'] = localeTag;
  arguments['requestId'] = requestId;

  final Object? rawAddress;
  try {
    rawAddress = await methodChannel.invokeMethod<Object?>(
      'resolveAddress',
      arguments,
    );
  } on MissingPluginException {
    throw UnsupportedError(
      'native_address_autocomplete only supports Android and iOS.',
    );
  } on PlatformException catch (error) {
    throw NativeAddressAutocompleteException(
      error.message ?? 'Address resolve failed.',
      code: error.code,
    );
  }

  if (rawAddress is! Map<Object?, Object?>) {
    return null;
  }

  final ResolvedAddress resolvedAddress = ResolvedAddress.fromMap(rawAddress);
  if (resolvedAddress.fullText.isEmpty) {
    return null;
  }
  return resolvedAddress;
}