Index
この記事の紹介するサンプルコードを実行すると以下のようなアプリが出来上がります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { Future<void>? _launchInBrowser(Uri url) async { if (!await launchUrl( url, mode: LaunchMode.externalApplication, )) { throw 'Could not launch $url'; } } Uri uriSample = Uri(scheme: 'https', host: 'komugiprograming.com', path: 'ブログ始めてみた/'); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: ElevatedButton( onPressed: () => _launchInBrowser(uriSample), child: const Text("launchInBrowser"), ), ), ); } } |
以下のコマンドをターミナルで叩いてください
1 |
flutter pub add url_launcher |
するとpabspec.yamlファイルに以下のコードが追加されているはず。(バージョンは違う場合がございます)
1 2 |
dependencies: url_launcher: ^6.1.5 |
ここまできたら準備完了!
例えば、
以下のURLをブラウザで開きたい場合
HTML
1 |
<a href="https://komugiprograming.com/%e3%83%96%e3%83%ad%e3%82%b0%e5%a7%8b%e3%82%81%e3%81%a6%e3%81%bf%e3%81%9f/">https://komugiprograming.com/</a>ブログ始めてみた/ |
以下のようにURIを指定します。
1 2 |
Uri uriSample = Uri(scheme: 'https', host: 'komugiprograming.com', path: 'ブログ始めてみた/'); |
launchUri()メソッドにURIとmodeを設定してあげます。
今回は外部ブラウザを開くモードを指定しています。
1 2 3 4 5 6 7 8 |
Future<void>? _launchInBrowser(Uri url) async { if (!await launchUrl( url, mode: LaunchMode.externalApplication, )) { throw 'Could not launch $url'; } } |
1 2 3 |
ElevatedButton( onPressed: () => _launchInBrowser(uriSample), child: const Text("launchInBrowser"), |