はじめに
LINEでメッセージを送る機能をFlutterアプリに追加したいと思ったが、最新の情報が少なかったので投稿日(2024/3/3)時点でうまくいった方法をメモ。
url_launcher
を入れる
pubspec.yamlにurl_launcher
を追加
dependencies:
url_launcher: ^6.2.5
ボタン作成
それっぽいボタンを作成
ElevatedButton.icon(
onPressed: () {},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.green,
foregroundColor: Colors.white,
),
icon: const Icon(Icons.messenger_rounded, color: Colors.white,),
label: const Text('LINE', style: TextStyle(fontWeight: FontWeight.bold),)
)
url_launcher
の処理を作成
static Future<void> launchLineMessage(String url) async {
final uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
await launchUrl(
uri,
mode: LaunchMode.externalApplication
);
} else {
print('URL起動エラー');
}
}
- URLをuriに変換
-
canLaunchUrl
でそのuriが使用可能かチェック - 上記がtrueだったら起動。
LINE のURL スキームを準備
LINE Developers からテキストメッセージを送るURLスキームを持ってくる。
final String lineUrl = 'https://line.me/R/share?text={text_message}';
上記のURLスキームで送信先を選択画面を開く。{text_message}
に設定されたテキストメッセージを送信できる。
Buttonに処理を追加
作成したLINEっぽいボタンに処理を追加する。
ElevatedButton.icon(
onPressed: () {
// 送りたいメッセージを追加
final String addTextUrl = '$lineUrlこれはテスト';
// LINEの処理を追加
launchLineMessage (addTextUrl);
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.green,
foregroundColor: Colors.white,
),
icon: const Icon(Icons.messenger_rounded, color: Colors.white,),
label: const Text('LINE', style: TextStyle(fontWeight: FontWeight.bold),)
)
成功
参考
https://flutter.keicode.com/basics/urllauncher.php
https://zenn.dev/gahaku200/articles/81a531f28e4701
ありがとうございます。