flutter如何实现拨打电话功能

在Flutter中如何实现拨打电话功能?需要用到什么插件或原生代码吗?有没有简单易用的示例代码可以参考?调用系统拨号界面和直接拨打电话分别要怎么实现?

2 回复

Flutter中可使用url_launcher包实现拨打电话。
代码示例:

import 'package:url_launcher/url_launcher.dart';

void callPhone(String phoneNumber) async {
  final url = 'tel:$phoneNumber';
  if (await canLaunch(url)) {
    await launch(url);
  }
}

需在AndroidManifest.xmlInfo.plist中配置权限。

更多关于flutter如何实现拨打电话功能的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中实现拨打电话功能,可以通过 url_launcher 包来实现。以下是详细步骤和代码示例:

步骤1:添加依赖

pubspec.yaml 文件中添加依赖:

dependencies:
  url_launcher: ^6.1.0

运行 flutter pub get 安装包。

步骤2:导入包

在 Dart 文件中导入:

import 'package:url_launcher/url_launcher.dart';

步骤3:实现拨号功能

使用 launchUrl 方法,并传入 tel: 协议的 URL:

Future<void> makePhoneCall(String phoneNumber) async {
  final Uri launchUri = Uri(
    scheme: 'tel',
    path: phoneNumber,
  );
  if (await canLaunchUrl(launchUri)) {
    await launchUrl(launchUri);
  } else {
    throw '无法拨打电话:$phoneNumber';
  }
}

完整示例代码

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('拨打电话示例')),
        body: Center(
          child: ElevatedButton(
            onPressed: () => makePhoneCall('10086'),
            child: Text('拨打 10086'),
          ),
        ),
      ),
    );
  }
}

Future<void> makePhoneCall(String phoneNumber) async {
  final Uri launchUri = Uri(
    scheme: 'tel',
    path: phoneNumber,
  );
  if (await canLaunchUrl(launchUri)) {
    await launchUrl(launchUri);
  } else {
    throw '无法拨打电话:$phoneNumber';
  }
}

注意事项

  1. Android 权限:在 android/app/src/main/AndroidManifest.xml 中添加:

    <uses-permission android:name="android.permission.CALL_PHONE" />
    

    注意:从 Android 6.0 开始,部分权限需要运行时申请。

  2. iOS 配置:在 ios/Runner/Info.plist 中添加:

    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>tel</string>
    </array>
    
  3. 错误处理:实际使用时建议用 try-catch 包裹并处理异常。

这种方法会跳转到系统拨号界面并显示号码,用户确认后才会拨打。

回到顶部