提问人:GHH 提问时间:2/21/2023 更新时间:11/18/2023 访问量:361
Flutter webview 连接在 web 中被拒绝
Flutter webview connection refused in web
问:
我想使用 和 构建一个带有 WebView 的应用程序。Android
IOS
Web
所以我下载了这个样本
当我加载“https://flutter.dev”时它起作用
但是当我将 url 更改为“https://www.google.com”时,网络会出现错误连接被拒绝。
另外,你有没有建议库在 上构建 WebView?Android
IOS
Web
我尝试了几种流行的,但它们都很难使用。
答:
0赞
MendelG
11/16/2023
#1
请参阅 Github 问题/文档:
- 不支持 iframe 嵌入的普通 URL(例如 https://google.com,您需要为此使用)。
SourceType.urlBypass
webviewController.loadContent(
'https://google.com',
SourceType.urlBypass,
);
完整示例:
import 'package:flutter/material.dart';
import 'package:webviewx/webviewx.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyWebViewPage(),
);
}
}
class MyWebViewPage extends StatefulWidget {
@override
_MyWebViewPageState createState() => _MyWebViewPageState();
}
class _MyWebViewPageState extends State<MyWebViewPage> {
late WebViewXController webviewController;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('WebViewX Example'),
),
body: Column(
children: [
WebViewX(
initialContent: 'https://example.com',
// initialSourceType: SourceType.,
onWebViewCreated: (controller) => webviewController = controller,
onWebResourceError: (error) {
print('WebViewX Error: ${error.errorCode}, ${error.description}');
},
// ... other options
width: 400,
height: 400,
),
ElevatedButton(
onPressed: () {
// Load a URL when the button is pressed
webviewController.loadContent(
'https://google.com',
SourceType.urlBypass,
);
},
child: Text('Load Google Website'),
),
ElevatedButton(
onPressed: () {
// Go back in the webview's history
webviewController.goBack();
},
child: Text('Go Back'),
),
ElevatedButton(
onPressed: () {
// Go forward in the webview's history
webviewController.goForward();
},
child: Text('Go Forward'),
),
],
),
);
}
}
评论
0赞
Saurabh Jain
11/16/2023
我用于在 Web 平台上的对话框中启动 URL,如下所示: ' final IFrameElement iFrameElement = IFrameElement() ..src = 网址 ..attributes['sourceType'] = 'urlBypass' ..style.border = '无' ..style.width = '100%' ..style.height = '100%';'不过,我也有同样的问题。iFrameElement
0赞
Siddarth Jain
11/18/2023
#2
而不是使用 https://pub.dev/packages/webviewx
使用 https://pub.dev/packages/webview_flutter
这是官方图书馆
像这样使用 ->
对于 webview,请使用 iFrameElement,但只有在启用 CORS 策略时才有效
评论
0赞
Cypher
11/22/2023
这会支持 Web 平台吗?webview_flutter
0赞
Siddarth Jain
11/24/2023
对于 webview,请使用 iFrameElement,但只有在启用 CORS 策略时才有效
评论