searchAddress method
Stream<List<GmhAddressData> >
searchAddress({
- required String text,
- required GmhSearchParams params,
Get list of addresses based on text query
Implementation
Stream<List<GmhAddressData>> searchAddress({
required String text,
required GmhSearchParams params,
}) async* {
if (text.trim().isEmpty) {
yield [];
return;
}
final temp = await _textSearch(text.trim(), params);
yield temp;
final List<GmhAddressData> addresses = [];
for (int i = 0; i < temp.length; i++) {
addresses.add(temp[i]);
if (temp[i].types.contains('postal_code')) {
addresses.addAll(await _searchNearby(params.apiKey, temp[i]));
}
}
yield addresses;
if (params.loc == null ||
params.directionsKey == null ||
addresses.length <= 5) {
return;
}
temp.clear();
final List<GmhAddressData> newAddresses = [];
for (int i = 0; i < addresses.length; i++) {
final distance = await _getDistance(
params.directionsKey!,
params.loc!,
LatLng(addresses[i].lat, addresses[i].lng),
);
newAddresses.add(addresses[i].setDistance(distance));
}
newAddresses.sort(
(a, b) => (a.distance ?? 10e10).compareTo(b.distance ?? 10e10),
);
yield newAddresses;
}