添加pubspec.yaml依赖
url_launcher: ^5.4.1
webview_flutter: ^0.3.18+1
--------------main.dart
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';void main() => runApp(MyApp());const String TITLE='whq_test';class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(title: TITLE,theme: ThemeData(primarySwatch: Colors.blue,),home: MyHomePage(title: TITLE),);}
}class MyHomePage extends StatefulWidget {MyHomePage({Key key, this.title}) : super(key: key);final String title;@override_MyHomePageState createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {String _title = TITLE;WebViewController _webViewController=null;@overridevoid initState() {super.initState();}void _openApp(openurl) async{// Androidprint("open app");final url = 'vnd.'+openurl;if (await canLaunch(url)) {await launch(url);} else {// Iosfinal url = openurl;if(await canLaunch(url)){await launch(url);}else{throw 'Could not launch $url';}}}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(_title),),body: WebView(initialUrl: "http://whqtest/app/test.html",javascriptMode: JavascriptMode.unrestricted,navigationDelegate: (NavigationRequest request){if (request.url.startsWith('js://webview')) {print('blocking navigation to $request}');_openApp(request.url.replaceAll("js://webview", "").replaceAll("?url=", ""));return NavigationDecision.prevent;}print('allowing navigation to $request');return NavigationDecision.navigate;},onWebViewCreated: (WebViewController webViewController){_webViewController=webViewController;},onPageFinished: (url){_webViewController.evaluateJavascript("document.title").then((result){String title = result.substring(1, result.length - 1);if (title.length > 0) {print(title);setState(() {_title = title;});}});},),);}@overridevoid dispose(){super.dispose();_webViewController=null;}
}
————————test.html
hello world!<a href="https://www.baidu.com">百度</a><a href="js://webview?url=weixin://">微信</a>