如何从Flutter拨打电话?

时间:2017-03-31 20:20:33

标签: flutter

我正在构建一个Flutter应用程序,我想拨打电话号码以响应按钮点击。最好的方法是什么?

谢谢!

4 个答案:

答案 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)

  1. 将此添加到包的 pubspec.yaml 文件中:dependencies: url_launcher: ^5.7.10

  2. 安装:$ flutter pub get

  3. 导入 import 'package:url_launcher/url_launcher.dart';

  4. 在您的类中,定义此方法,以便您可以从代码中的任何操作调用:

     Future<void> _makePhoneCall(String url) async {
     if (await canLaunch(url)) {
       await launch(url);
     } else {
       throw 'Could not launch $url';
     }
    

    }

  5. 在构建小部件内部:

     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);
}