launch method
Launch a URL. Opens in the native app if it handles the URL, otherwise opens in the default browser.
On Android, androidPackageName targets the specific app package
so the system resolver doesn't open a different app (e.g. Go vs Maps).
Complete only once handoff is accepted. Throw MapHandoffException only
for confirmed rejection; other exceptions stop fallback because the
outcome is unknown. A blocked popup must be marked blocked, not retried.
Implementation
@override
Future<void> launch(String url, {String? androidPackageName}) async {
final opened = web.window.open(url, '_blank');
if (opened == null) {
throw const MapHandoffException(
'The browser blocked the map window. Allow popups and retry.',
blocked: true,
);
}
}