launch method

  1. @override
Future<void> launch(
  1. String url, {
  2. String? androidPackageName,
})
override

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,
    );
  }
}