我正在使用Flutter Webview插件开发 Flutter webview 应用程序。
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:url_launcher/url_launcher.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child : const WebView(
initialUrl: 'https://google.com',
javascriptMode: JavascriptMode.unrestricted,
),
)
)
);
}
}
但是,如果打开的网页中的任何链接是应用程序链接,例如:fb://profile,我会得到 net::ERR_UNKNOWN_URL_SCHEME。
在android中,我发现解决方案是覆盖这里提到的shouldOverrideUrlLoading ,但是我应该怎么做呢?
我正在尝试这里提到的解决方案。
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:url_launcher/url_launcher.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child : const WebView(
initialUrl: 'https://google.com',
javascriptMode: JavascriptMode.unrestricted,
navigationDelegate: (NavigationRequest request) {
if (request.url.contains("mailto:")) {
launch(request.url);
return NavigationDecision.navigate;
}
},
),
)
)
);
}
}
但它会抛出错误,比如
错误:不是常量表达式。if (request.url.contains("mailto:")) {