Flutter直接拨打电话插件direct_call_plus的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter直接拨打电话插件direct_call_plus的使用

direct_call_plus 是一个用于在Flutter应用程序中直接拨打电话的插件,无需跳转到手机拨号界面。下面将详细介绍如何使用这个插件。

使用方法

添加依赖

首先,在你的 pubspec.yaml 文件中添加插件依赖:

dependencies:
  direct_call_plus: ^1.0.1

然后运行 flutter pub get 来安装插件。

Android配置

对于Android平台,不需要任何额外的配置。

iOS配置

对于iOS平台,需要在 info.plist 文件中添加以下内容:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>tel</string>
</array>

这允许应用查询和使用电话功能。

示例代码

以下是完整的示例代码,展示了如何使用 direct_call_plus 插件来实现拨打电话的功能:

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

void main() => runApp(const MyApp());

/// MyApp
class MyApp extends StatefulWidget {
  /// MyApp constructor
  const MyApp({Key? key}) : super(key: key);

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final TextEditingController _numberCtrl = TextEditingController();

  @override
  void initState() {
    super.initState();
    // 设置默认电话号码
    _numberCtrl.text = "213441256987";
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Direct call example app'),
        ),
        body: Column(
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextField(
                controller: _numberCtrl,
                decoration: const InputDecoration(labelText: "Phone Number"),
                keyboardType: TextInputType.number,
              ),
            ),
            ElevatedButton(
              child: const Text("Test Call"),
              onPressed: () async {
                // 调用拨打电话的方法
                DirectCallPlus.makeCall(_numberCtrl.text);
              },
            )
          ],
        ),
      ),
    );
  }
}

运行应用

  1. 将上述代码保存到 lib/main.dart 文件中。
  2. 确保你已经正确配置了 pubspec.yaml 并运行了 flutter pub get
  3. 在模拟器或真机上运行应用,输入电话号码并点击“Test Call”按钮即可尝试拨打电话。

注意:由于安全原因,某些设备可能不允许直接拨打电话,特别是在调试模式下。确保你在实际设备上测试此功能,并且已授予必要的权限。


更多关于Flutter直接拨打电话插件direct_call_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter直接拨打电话插件direct_call_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用direct_call_plus插件来直接拨打电话的示例代码。这个插件允许你的Flutter应用请求系统拨打电话,而无需通过拨号界面。

首先,确保你已经在pubspec.yaml文件中添加了direct_call_plus依赖:

dependencies:
  flutter:
    sdk: flutter
  direct_call_plus: ^x.y.z  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,按照以下步骤在你的Flutter应用中实现直接拨打电话的功能:

  1. 配置Android权限

    android/app/src/main/AndroidManifest.xml文件中添加拨打电话的权限:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.yourapp">
    
        <uses-permission android:name="android.permission.CALL_PHONE"/>
        <!-- 其他配置 -->
    
        <application
            <!-- 其他配置 -->
        >
            <!-- 其他配置 -->
        </application>
    </manifest>
    
  2. 请求拨打电话权限(在运行时请求,适用于Android 6.0及以上版本):

    在你的Dart代码中,使用permission_handler插件来请求权限。首先,在pubspec.yaml文件中添加permission_handler依赖:

    dependencies:
      flutter:
        sdk: flutter
      direct_call_plus: ^x.y.z  # 请替换为最新版本号
      permission_handler: ^x.y.z  # 请替换为最新版本号
    

    然后,在你的主Dart文件中,请求权限并处理:

    import 'package:flutter/material.dart';
    import 'package:permission_handler/permission_handler.dart';
    import 'package:direct_call_plus/direct_call_plus.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Direct Call Example'),
            ),
            body: Center(
              child: ElevatedButton(
                onPressed: _makePhoneCall,
                child: Text('Make Call'),
              ),
            ),
          ),
        );
      }
    
      Future<void> _makePhoneCall() async {
        // 请求拨打电话权限
        var status = await Permission.phone.status;
        if (!status.isGranted) {
          var result = await Permission.phone.request();
          if (!result.isGranted) {
            return; // 用户拒绝了权限请求
          }
        }
    
        // 使用direct_call_plus拨打电话
        String phoneNumber = "1234567890"; // 替换为实际电话号码
        bool success = await DirectCallPlus.dial(phoneNumber);
    
        if (success) {
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text('Call initiated successfully')),
          );
        } else {
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text('Failed to initiate call')),
          );
        }
      }
    }
    
  3. iOS配置

    对于iOS,你需要在Info.plist文件中添加拨打电话的用途说明。打开ios/Runner/Info.plist并添加以下内容:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    <key>NSPhoneUsageDescription</key>
    <string>This app needs access to make phone calls</string>
    

请注意,由于direct_call_plus插件可能会绕过系统的拨号界面直接发起电话,这在某些平台上可能受到权限和隐私政策的限制。因此,确保你的应用符合相关的应用商店政策和用户隐私标准。

此外,由于插件和Flutter框架的不断更新,请务必查阅最新的官方文档和示例代码,以确保你的实现是最新的和正确的。

回到顶部