Imaginad que estamos haciendo la app de un restaurante y mediante un estupendo botón con el icono de un teléfono queremos ofrecer la opción al usuario de realizar una llamada marcando automáticamente el número del restaurante. Esto es perfectamente factible con Flutter y muy sencillo de hacer.
La forma más fácil de llevarlo a cabo es que nuestra app no sea la que haga la llamada propiamente, sino que lancemos una intención de llamada al sistema operativo, y que éste abra otra app capaz de gestionar y realizar esa acción (normalmente la típica app de teléfono que haya en el dispositivo).
Para esto tenemos un plugin desarrollado por de la gente de Flutter llamado «url_launcher«. Con este plugin podremos lanzar esa petición al sistema (también podemos hacer otras cosas como abrir la URL de una web en un navegador).
Una vez hayamos incluido la dependencia a este plugin, podemos invocar la llamada telefónica simplemente con la función launch:
1
2
3 import 'package:url_launcher/url_launcher.dart';
...
launch('tel://$phoneNumber'); //donde $phoneNumber es el numero de teléfono que queremos marcar
Ya está, tan simple como eso. Si queremos tener un pequeño widget con un IconButton que realice esta llamada podría ser algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class CallPhoneWidget extends StatelessWidget {
final String _phoneNumber;
CallPhoneWidget(this._phoneNumber);
@override
Widget build(BuildContext context) {
return IconButton(
icon: Icon(Icons.phone),
onPressed: (){
launch('tel://$_phoneNumber');
},
);
}
}