Как открыть ссылки tel, mailto, whatsapp во флаттерном веб-просмотре?
Я веб-разработчик и начинаю трепаться. Я создал приложение веб-просмотра Flutter, просмотрев несколько руководств, и оно отлично работает для iOS и Android. Но когда я нажимаю на tel:'0123456789', mailto:'abc@gmail.com', ссылку WhatsApp (https://wa.me/9712345678), появляется страница Not Found. Я хочу открыть внешнее приложение для этих условий. Как с флаттером справиться с этой задачей для поддержки в iOS и Android? Я использовал плагин flutter webview для запуска URL-адреса, например:
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
return new MaterialApp(
debugShowCheckedModeBanner: false,
routes: {
"/": (_) => new WebviewScaffold(
url: "https://www.website.com/",
appBar: null,
withJavascript: true,
hidden: true,
enableAppScheme: true,
),
},
);
}
}
1 ответ
Установить
flutter_url_launcher
из https://pub.dev/packages/url_launcher
import 'package:url_launcher/url_launcher.dart';
return WebView(
...
navigationDelegate: (NavigationRequest request) {
if (request.url.contains('wa.me')) {
launch(request.url); //This is where Whatsapp launches
return NavigationDecision.prevent;
}
...
});
Вы можете сделать то же самое для
tel:
а также
mailto:
если вы хотите, чтобы пользователь использовал собственные приложения для звонков или отправки электронной почты.
return WebView(
...
navigationDelegate: (NavigationRequest request) {
if (request.url.contains('mailto:')) {
launch(request.url);
return NavigationDecision.prevent;
}
if (request.url.contains('tel:')) {
launch(request.url);
return NavigationDecision.prevent;
}
...
});