背景:我正在使用WebViewScaffold (颤振webview插件)在我的应用程序中打开一个网站。该网站有一个call选项,您可以在其中单击一个按钮,然后启动"tel://1231231234“url。
问题: WebView显示网页不可用的等等(类似于显示这里的问题)。我需要这个同时适用于iOS和安卓系统。如何使用这两个设备平台上的颤振WebView插件来实现这一点?
我见过有几个人只对Android使用意图(如上面所示的问题),而且不使用颤振。对于特定于平台的代码来说,这是一个问题吗?
发布于 2018-03-28 14:28:41
如颤振Webview插件示例中所示,您可以为URL中的更改实现以下方法。
_onUrlChanged = flutterWebviewPlugin.onUrlChanged.listen((String url) {
if (mounted) {
setState(() {
_history.add("onUrlChanged: $url");
});
if(url.contains("tel")){
//implement for condition
}
}
});您可以使用url发射器包来实现所需的条件,它可以在Android上使用。希望能帮上忙。
发布于 2021-05-10 17:05:16
为此做了点小小的锻炼。
WebviewScaffold(
url: link,
invalidUrlRegex: Platform.isAndroid
? "^tel:|^https:\/\/api.whatsapp.com\/send|^mailto:"
: "^tel:|^mailto:",
)在无效的regex中添加whatsapp、tel和mailto,因此WebviewScaffold将在onStateChanged中捕获它们之后中止操作
flutterWebviewPlugin.onStateChanged
.listen((WebViewStateChanged state) async {
if (mounted) {
if (state.type == WebViewState.abortLoad) {
_launchSocialNativeLink(state.url);
}
}
});
Future<void> _launchUrl(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
Future<void> _launchSocialNativeLink(String url) async {
if (Platform.isIOS) {
if (url.contains("tel:")) {
_launchUrl(URL);
}
} else if (Platform.isAndroid) {
if (url.contains(":tel") ||
url.contains("https://api.whatsapp.com/send")) {
_launchUrl(URL);
}
}
}发布于 2022-03-12 06:38:47
在颤振webview中,您必须检查URL是否以
“电话”:
您必须像下面的示例那样检查它:
if (request.url.startsWith('tel:')) {
launch('tel:01761685693');
return NavigationDecision.prevent;
}或者,如果你想以信使的方式打开门,那么你就必须这样通过:
if (request.url.startsWith('tel:')) {
launch('https://m.me/111150717184573');
return NavigationDecision.prevent;
}尽管您必须检查URL是否可以启动,如下所示:
static launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}https://stackoverflow.com/questions/49521531
复制相似问题