🔗
Flutterのurl_launcherでURLが開けない判定される場合の対処
はじめに
flutter のパッケージ url_launcher を使っていて、URL が開けるはずなのに、
canLaunch(url)
がfalse
になってしまう..
という問題があったので、メモしておこうかなと。
URL が開けなかった原因
その URL にはカタカナが含まれていました。日本語が URL に含まれているのがおそらく原因だったと思います。
例えばこんな感じに(この URL は存在しません)
https://zenn.dev/articles/url_laucher_canlaunch/テスト1
canLaunch
がfalse
になってしまったら、以下のように、URL をエンコードしてから再度チェックしてみてください。
url_launcher.dart
Future<void> launchUrl(String url) async {
final _canLaunch = await canLaunch(url);
if (_canLaunch) {
final success = await launch(url);
print('success :$success $url');
return;
}
final encodedUrl = Uri.encodeFull(url);
final _canLaunchAgain = await canLaunch(encodedUrl);
if (!_canLaunchAgain) {
print('link launch error $encodedUrl');
return;
}
await launch(encodedUrl);
}
最後に
プロジェクト内に、このようなメソッドを作成して、url_launcher を使用する場合は、この処理をくぐらせるようにしています。
もしプロジェクト内で、canLaunch(url)
とlaunch(url)
をバラバラで使用している場合は、上記のようなコードをメソッド化しておいて、使用すると良いかもしれません。
Twitter では Flutter を中心とする技術関連の情報を発信しています!
お仕事の依頼は以下のメールアドレスまでご連絡をよろしくお願いします。
mark.saito@jp-gx.com
Discussion