flutterでURLをブラウザで開く UrlLauncher – 開発日記(96)

2024/05/05

flutterで、URLを指定してChromeなどブラウザで開くにはどうすれば良いか。

url_launcher を使うと良いという記事を見かけたので使ってみた。

//使い方のイメージ

import 'package:url_launcher/url_launcher.dart';

Future<void> openUrl(String url, BuildContext context, String errorMessage) async {
  Uri uri = Uri.parse(url);
  if (await canLaunchUrl(uri)) {
    launchUrl(uri, webOnlyWindowName: '_blank');
  } else {
    throw 'このURLにはアクセスできません';
  }
}

//呼び出し方
await openUrl("https://idea-lane.com/", context, "ただいま $url にアクセスできません。しばらく経ってからお試しください。");

これだけで動くのでとても便利。

ところが、デバッグ時は問題なかったのに、Webにdeployしたときだけなぜか動かない。

ブラウザの検証ツールで調べたところ、consoleに下記のエラーが出ていることが分かった。

Uncaught MissingPluginException(No implementation found for method canLaunch on channel plugins.flutter.io/url_launcher)

しかしネットで調べても「flutter clean で直った」的なコメントしか見つからず。
残念ながら自分の場合は直らなかった。

色々やっているうちに、flutter の channel が master だったことに気付き stable に戻してみる。

stableでビルドして再デプロイした結果、直った!

これで又無駄に2時間くらい使ってしまった……。
flutterはこういうのが多くてつらい。

昔使っていたDelphi 7の安定っぷりが懐かしいなぁ。


※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています

この記事はアイディア整理ソフト「idea Lane」の開発記録です

どなたでも、ユーザ登録だけで無料ですぐに使えます
テキストベースの思考整理ツール「idea Lane」


0

コメント / Comment

タイトルとURLをコピーしました