Estoy creando una aplicación de Flutter y me gustaría marcar un número de teléfono en respuesta al toque de un botón. ¿Cuál es la mejor manera de hacer esto?
¡Gracias!
Este método abrirá el marcador:
_launchCaller() async { const url = "tel:1234567"; if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; } }EDITAR:
En caso de que alguien enfrente errores:
Agregue url_launcher: en pubspec.yaml y ejecute flutter get
También import 'package:url_launcher/url_launcher.dart';
Por lo general, para interactuar con la plataforma subyacente, debe escribir un código específico de la plataforma y comunicarse con la misma mediante los canales de la plataforma . Sin embargo, Flutter proporciona algunos puntos de integración con la plataforma desde el primer momento. Para marcar el teléfono, por ejemplo, puede usar la API UrlLauncher.launch con el esquema tel para marcar el teléfono.
Algo como UrlLauncher.launch("tel://<phone_number>"); debería funcionar bien en todas las plataformas.
Tenga en cuenta que esto no funcionará en los simuladores. Así que asegúrese de estar usando un dispositivo real para probar esto.
Puede usar el widget url_launcher ( https://pub.dev/packages/url_launcher )
Agregue esto al archivo pubspec.yaml de su paquete: dependencies: url_launcher: ^5.7.10
Instálalo: $ flutter pub get
Importarlo import 'package:url_launcher/url_launcher.dart';
Dentro de su clase, defina este método para que pueda llamar desde cualquier acción en su código:
Future<void> _makePhoneCall(String url) async { if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; }}
dentro del widget de compilación:
IconButton(icon: new Icon(Icons.phone), onPressed: () { setState(() { _makePhoneCall('tel:0597924917'); }); }, ),Nota 1: debe escribir el número de teléfono con el prefijo 'tel': 'tel:0123456789'
Nota 2: a veces no funcionará bien hasta que cierres la aplicación en tu móvil y la vuelvas a abrir, para que flutter pueda inyectar el código del nuevo widget con éxito.