Raj*_*Jr. 14
这打开了拨号器
_launchCaller() async {
const url = "tel:1234567";
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
Run Code Online (Sandbox Code Playgroud)
使用onPressed调用_launcher:_launchcaller,
编辑:如果有人遇到错误:添加url_launcher:pubspec.yaml并运行flutter getflutter get
小智 9
您可以使用 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';
}
Run Code Online (Sandbox Code Playgroud)
}
在构建小部件内:
IconButton(icon: new Icon(Icons.phone),
onPressed: ()
{
setState(() {
_makePhoneCall('tel:0597924917');
});
},
),
Run Code Online (Sandbox Code Playgroud)
注1:电话号码应以“tel”为前缀:“tel:0123456789”
注2:有时需要关闭手机中的应用程序并重新打开它才能正常工作,因此flutter可以成功注入新widget的代码。
通常,要与底层平台交互,您必须编写特定于平台的代码并使用平台通道与相同的代码进行通信.但是,Flutter提供了与平台开箱即用的一些集成点.例如,要拨打电话,您可以使用带有该方案的UrlLauncher.launch API tel来拨打电话.
类似的东西UrlLauncher.launch("tel://<phone_number>");应该适用于所有平台.
请注意,这在模拟器中不起作用.因此,请确保使用实际设备进行测试.
使用url_launcher。
import 'package:url_launcher/url_launcher.dart';
openDialPad(String phoneNumber) async {
Uri url = Uri(scheme: "tel", path: phoneNumber);
if (await canLaunchUrl(url)) {
await launchUrl(url);
} else {
print("Can't open dial pad.");
}
}
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记按照文档进行info.plist更新AndroidManifest.xml。
请按照以下步骤操作:
url_launcher: Latest version在 pubspec.yaml 中添加依赖项
去\android\app\src\main\AndroidManifest.xml。
在<application之前添加查询行,如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter">
<queries>
<intent>
<action android:name="android.intent.action.DIAL" />
<data android:scheme="tel" />
</intent>
</queries>
<application ...
Run Code Online (Sandbox Code Playgroud)
更多疑问请关注此更多疑问
4.添加拨号功能,并设置url final url ="tel:$phoneNumber";像这样:
Future<void> dialNumber(
{required String phoneNumber, required BuildContext context}) async {
final url = "tel:$phoneNumber";
if (await canLaunch(url)) {
await launch(url);
} else {
ShowSnackBar.showSnackBar(context, "Unable to call $phoneNumber");
}
return;
}
Run Code Online (Sandbox Code Playgroud)
截至2023 年 1 月,这对我有用
注意:与上面其他答案的主要区别是我的#4
另外:您现在可以在模拟器中使用测试
脚步:
1.添加url_launcher: latest到pubspec.yaml
2.配置:
对于 IOS:添加作为文件中的tel条目传递的方案。canLaunchUrlLSApplicationQueriesSchemesInfo.plist
像这样:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tel</string>
</array>
Run Code Online (Sandbox Code Playgroud)
对于 Android:添加方案作为条目tel传递到您的[ie \android\app\src\main\AndroidManifest.xml ] 文件中。canLaunchUrlqueriesAndroidManifest.xml
像这样:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutApp">
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="tel" />
</intent>
</queries>
<application
Run Code Online (Sandbox Code Playgroud)
3.将 url_launcher 导入到您的文件中:ieimport 'package:url_launcher/url_launcher.dart';
4.代码
Future<void> _dialNumber(String phoneNumber) async {
final Uri launchUri = Uri(
scheme: 'tel',
path: phoneNumber,
);
await launchUrl(launchUri);
}
Run Code Online (Sandbox Code Playgroud)
来源:url_launcher
| 归档时间: |
|
| 查看次数: |
6912 次 |
| 最近记录: |