🌟

url_launcherの使い方備忘録

2024/05/19に公開5

はじめに

アプリ内で外部のWebページを見たい時にurl_launcherというものがあるのを知りました。これを実装したく調べた結果……url_launcherの使い方を紹介している日本語の記事は一年以上前のものしかなく、処理の仕方が現在とは違っていたり、この書き方では実装できなかったりでした。

https://blog.flutteruniv.com/flutter-package-url_launcher/
https://qiita.com/KKoichi51/items/0f6c2649640b7ff5f3b0

公式が一番

なので英語の羅列にビビりながら公式ページを見ました。(本当は公式を一番最初に見るべきなのでしょうが)

https://pub.dev/packages/url_launcher

final Uri _url = Uri.parse('https://flutter.dev');

でURLを指定して、

Future<void> _launchUrl() async {
  if (!await launchUrl(_url)) {
    throw Exception('Could not launch $_url');
  }
}

という関数を書き、好きな場所に実装するという感じでした。

私はappBarの中にボタンを実装して、それを押すとサポートページに飛ぶようにしたかったので、以下のように実装しました。

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Calendar'),
        actions: [
          IconButton(
            onPressed: () {
              _launchUrl();
            },
            icon: const Icon(Icons.add_alert_outlined),
          ),
        ],
      ),

   (中略)

     );
    }

これで、アラートボタンを押すと_launchUrlが呼び出されて指定したWebページに飛べました。

onPressedの中、書いた_launchUrlのあとに()をつけ忘れてボタンを押しても反応しないというミスもありました。

関数を実行するには後ろに()が必要とのこと。関数名の後に()を書かないと、それは関数の「実行」ではなく「参照」を意味し、これは関数そのものを指し示し、実行はされません。だそう。なるほど……。
https://zenn.dev/joo_hashi/articles/ee377ae7f1fe05
こちらの記事のやり方でも実装できました。

おわり

致命的に英語が苦手なので日本語を探していたのですが、まず公式ページを見ろというのはこういうことですね。公式が一番新しく正しいのは当然。これも勉強になりました。

Discussion

JboyHashimotoJboyHashimoto

動作検証したら動きましたけどね?

なんか間違えてません???
https://github.com/sakurakotubaki/url_launcher_example
これは最新版のパッケージ
https://pub.dev/packages/url_launcher/install

ともとも

早速コメントありがとうございます!
何か間違えているのかもしれません……プログラミング初心者で手探りの状態なので、コードを打つ場所を間違えたとかはありえます……
もう一度検証してやり直してみます!

ともとも

新規でプロジェクト作成してコピペしたら動きました!コードを打つ場所を間違えた可能性が濃厚です……😭
記事修正しておきます!