[英]Platform Exception Flutter Webview, Load Url Failed
I have a code like below, on Android the following code runs fine, when I run the iOS application, I get an error like the following我有如下代码,在 Android 上,以下代码运行良好,当我运行 iOS 应用程序时,出现如下错误
PlatformException (PlatformException(loadUrl_failed, Failed parsing the URL, Request was: '{ headers = ""; url = "xxxxx; }', null)) PlatformException (PlatformException(loadUrl_failed, 解析 URL 失败, 请求为: '{ headers = ""; url = "xxxxx; }', null))
What should I do?我应该怎么办? i use this plugin https://pub.dev/packages/webview_flutter loadUrl function can't run at IOS appication我使用这个插件https://pub.dev/packages/webview_flutter loadUrl function can't run at IOS appication
class WebViewDefault extends StatefulWidget {
final String targetUrl;
const WebViewDefault({
keys,
@required this.targetUrl,
}) : super(key: key);
@override
WebViewDefaultState createState() => WebViewDefaultState();
}
class WebViewDefaultState extends State<WebViewDefault> {
var url;
WebViewController controller;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
url = widget.targetUrl;
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
print("target URL ${widget.key} $url");
return WebView(
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (webviewController) {
controller = webviewController;
},
onProgress: (int progress) {
print("WebView is loading(progress : $progress%)");
},
onPageStarted: (String url) {
print('Page started loading: $url');
},
onPageFinished: (String url) {
print('Page finished loading: $url');
},
gestureNavigationEnabled: true,
);
}
void reloadNewUrl(url) {
setState(() {
controller.loadUrl(url);
});
}
}
Faced a similar issue recently.最近遇到了类似的问题。 Converting the url to URI did the trick.将 url 转换为 URI 就可以了。 Here is your code with a little tweak.这是您的代码,稍作调整。
class WebViewDefault extends StatefulWidget {
final String targetUrl;
const WebViewDefault({
keys,
@required this.targetUrl,
}) : super(key: key);
@override
WebViewDefaultState createState() => WebViewDefaultState();
}
class WebViewDefaultState extends State<WebViewDefault> {
var url;
WebViewController controller;
@override
void initState() {
super.initState();
url = widget.targetUrl;
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
}
@override
Widget build(BuildContext context) {
print("target URL ${widget.key} $url");
return WebView(
initialUrl: Uri.parse(url).toString(),
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (webviewController) {
controller = webviewController;
},
onProgress: (int progress) {
print("WebView is loading(progress : $progress%)");
},
onPageStarted: (String url) {
print('Page started loading: $url');
},
onPageFinished: (String url) {
print('Page finished loading: $url');
},
gestureNavigationEnabled: true,
);
}
void reloadNewUrl(url) {
setState(() {
controller.loadUrl(Uri.parse(url).toString());
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.