url_launcher
패키지는 Flutter 애플리케이션에서 브라우저를 열거나 이메일, 전화, 문자 메시지를 보내는 등의 기능을 제공합니다. 이 패키지를 사용하면 다양한 URL 스킴을 처리할 수 있습니다.
pubspec.yaml
파일에 url_launcher
를 종속성으로 추가합니다.
dependencies:
flutter:
sdk: flutter
url_launcher: ^6.0.9
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
final Uri _url = Uri.parse('<https://flutter.dev>');
void main() => runApp(
const MaterialApp(
home: Material(
child: Center(
child: ElevatedButton(
onPressed: _launchUrl,
child: Text('Show Flutter homepage'),
),
),
),
),
);
Future<void> _launchUrl() async {
if (!await launchUrl(_url)) {
throw Exception('Could not launch $_url');
}
}
void _makePhoneCall() async {
const phoneNumber = 'tel:+123456789';
if (await canLaunch(phoneNumber)) {
await launch(phoneNumber);
} else {
throw 'Could not launch $phoneNumber';
}
}
void _sendEmail() async {
final Uri emailUri = Uri(
scheme: 'mailto',
path: 'example@example.com',
queryParameters: {
'subject': 'Example Subject & Symbols are allowed!',
'body': 'This is an example email body'
}
);
if (await canLaunch(emailUri.toString())) {
await launch(emailUri.toString());
} else {
throw 'Could not launch $emailUri';
}
}
void _sendSMS() async {
const smsUri = 'sms:+123456789';
if (await canLaunch(smsUri)) {
await launch(smsUri);
} else {
throw 'Could not launch $smsUri';
}
}
launch
메소드를 호출하기 전에 항상 canLaunch
를 사용하여 URL이 유효한지 확인합니다. 유효하지 않은 URL을 열려고 하면 예외가 발생합니다.if (await canLaunch(url)) {
await launch(url);
} else {
// URL이 유효하지 않으면 예외 처리
}
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<uses-permission android:name="android.permission.CALL_PHONE"/>
Uri
클래스를 사용하여 자동으로 처리할 수 있습니다.