Я работаю над приложениями веб-просмотра Flutter, используя плагин 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 :)) {