1

我是一名 Web 开发人员,也是 Flutter 的初学者。我通过观看一些教程创建了一个 Flutter Web 视图应用程序,它在 iOS 和 Android 上运行良好。但是当我点击 tel:'0123456789', mailto:'abc@gmail.com', WhatsApp 链接 ( https://wa.me/9712345678 ) 时,它会进入 Not Found 页面。我想为这些条件打开一个外部应用程序。如何快速处理此任务以支持 iOS 和 Android?我使用颤振 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,
            ),
      },
    );
  }
}
4

1 回答 1

1

flutter_url_launcherhttps://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;
  }

  ...
});
于 2022-01-25T07:55:41.137 回答