我正在构建一个Flutter应用程序,我想拨打电话号码以响应按钮点击。最好的方法是什么?
谢谢!
答案 0 :(得分:7)
通常,要与底层平台进行交互,您必须编写特定于平台的代码并使用platform channels与其进行通信。但是,Flutter提供了与平台开箱即用的一些集成点。例如,要拨打电话,您可以使用UrlLauncher.launch API和tel
方案拨打电话。
像UrlLauncher.launch("tel://<phone_number>");
这样的东西应该适用于所有平台。
请注意,这在模拟器中不起作用。因此,请确保使用实际设备进行测试。
答案 1 :(得分:6)
这打开了拨号器
_launchcaller() async
{
const url = "tel:1234567";
if (await canLaunch(url))
{
await launch(url);
}
else{
throw 'Could not launch $url';
}
}
使用onPressed调用_launcher:_launchcaller,
编辑:如果有人遇到错误:
在pubspec.yaml&amp;中添加url_launcher:
。奔跑得到
另外import 'package:url_launcher/url_launcher.dart';
答案 2 :(得分:4)
您可以使用 url_launcher 小部件 (https://pub.dev/packages/url_launcher)
将此添加到包的 pubspec.yaml 文件中:dependencies: url_launcher: ^5.7.10
安装:$ flutter pub get
导入 import 'package:url_launcher/url_launcher.dart';
在您的类中,定义此方法,以便您可以从代码中的任何操作调用:
Future<void> _makePhoneCall(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
在构建小部件内部:
IconButton(icon: new Icon(Icons.phone),
onPressed: ()
{
setState(() {
_makePhoneCall('tel:0597924917');
});
},
),
注意 1:您应该写带有前缀 'tel' 的电话号码:'tel:0123456789'
注意2:有时在手机中关闭应用程序并重新打开它才能正常工作,因此flutter可以成功注入新widget的代码。
答案 3 :(得分:0)
它的 too easy
import 'package:flutter/material.dart';
import 'package:flutter_phone_direct_caller/flutter_phone_direct_caller.dart';
void main() {
runApp(Scaffold(
body: Center(
child: RaisedButton(
onPressed: _callNumber,
child: Text('Call Number'),
),
),
));
}
_callNumber() async{
const number = '08592119XXXX'; //set the number here
bool res = await FlutterPhoneDirectCaller.callNumber(number);
}