🌟
url_launcherの使い方備忘録
はじめに
アプリ内で外部のWebページを見たい時にurl_launcherというものがあるのを知りました。これを実装したく調べた結果……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のあとに()をつけ忘れてボタンを押しても反応しないというミスもありました。
関数を実行するには後ろに()が必要とのこと。関数名の後に()を書かないと、それは関数の「実行」ではなく「参照」を意味し、これは関数そのものを指し示し、実行はされません。だそう。なるほど……。
こちらの記事のやり方でも実装できました。おわり
致命的に英語が苦手なので日本語を探していたのですが、まず公式ページを見ろというのはこういうことですね。公式が一番新しく正しいのは当然。これも勉強になりました。
Discussion
すんませーん🙇
今度記事更新します!
動作検証したら動きましたけどね?
なんか間違えてません???
これは最新版のパッケージ早速コメントありがとうございます!
何か間違えているのかもしれません……プログラミング初心者で手探りの状態なので、コードを打つ場所を間違えたとかはありえます……
もう一度検証してやり直してみます!
新規でプロジェクト作成してコピペしたら動きました!コードを打つ場所を間違えた可能性が濃厚です……😭
記事修正しておきます!
👏👏👏👏👏👏