如何在Flutter调用应用中编写调用按钮的功能?

时间:2019-06-27 06:33:26

标签: flutter

我有一个文本字段,用户可以在其中输入一个数字和一个Raisedbutton。单击该按钮,用户应该可以拨打该号码。如何为该按钮编写onPressed()函数?

在上面的代码中,我有主类,其中的Home()类被调用

import 'package:flutter/material.dart';

class Home extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return HomeState();
  }
}
class HomeState extends State<Home> {
  TextEditingController numcontroller = new TextEditingController();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          backgroundColor: Colors.deepPurple,
          title: Text('Calling App'),
        ),
        body: Column(
          children: <Widget>[
            Container(
              margin: EdgeInsets.only(top: 60.0, left: 10.0, right: 10.0),
              child: TextField(
                  controller: numcontroller,
                  decoration: InputDecoration(
                      labelText: 'Enter Phone Number',
                      border: OutlineInputBorder(
                          borderSide: BorderSide(
                            color: Colors.deepPurple,
                          )
                      )
                  )
              ),
            ),
            Container(
              height: 45.0,
              width: 90.0,
              margin: EdgeInsets.only(top: 40, left: 10, right: 10.0),
              child: RaisedButton(
                  color: Colors.deepPurple,
                  elevation: 7.0,
                  child: Text(
                    'Call',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 20.0,
                    ),
                  ),
                  onPressed: () {
                    _calling();
                  }
              ),
            )
          ],
        ),
      ),
    );
  }

  void _calling(){
  }
}

假设我输入了一个号码94 ********。然后按该按钮,呼叫应该连接到该号码。如果忙或关机,则应该显示任何警报消息。

2 个答案:

答案 0 :(得分:0)

如果您实际上想通过应用程序拨打电话,则需要标记为敏感许可的grep -w 'RPT_ALINKS' stats2.log | awk -F 'TK' '{print FS }' 许可,您的应用将与Google Play政策不兼容。

您可以改为打开电话应用, 首先安装url_launcher 在CALL_PHONE

pubspec.yaml

然后

dependencies:
  url_launcher: ^5.0.3

答案 1 :(得分:0)

首先导入URL启动器依赖项

  url_launcher: ^5.2.5

然后您的调用函数应如下所示

_calling() async {
const url = 'tel:+12345678';
if (await canLaunch(url)) {
  await launch(url);
} else {
  throw 'Could not launch $url';
}

}