【发布时间】:2020-08-13 10:06:39
【问题描述】:
我正在尝试通过 URL 在webview 中显示网页。
我试过flutter_webview_plugin插件,但是当我在浏览器上运行项目时它不起作用。
有没有其他方法可以在 Flutter Web 应用中显示网页?
【问题讨论】:
标签: flutter-web
我正在尝试通过 URL 在webview 中显示网页。
我试过flutter_webview_plugin插件,但是当我在浏览器上运行项目时它不起作用。
有没有其他方法可以在 Flutter Web 应用中显示网页?
【问题讨论】:
标签: flutter-web
flutter_webview_plugin 是将网页嵌入到应用程序中。在 Flutter Web 中,您应该使用 HtmlElementView 小部件。
大多数演示使用IFrameElement 嵌入网页。您可以检查此easy_web_view 包以自动处理移动和网络平台。
它根据部署的情况在内部自动使用HTMLElementView 和WebView。
一些例子是可用的here
添加 onLoad 监听器的更新
IFrameElement iframeElement = IFrameElement()
..src = 'url'
..style.border = 'none'
..onLoad.listen((event) {
// perform you logic here.
});
ui.platformViewRegistry.registerViewFactory(
'webpage',
(int viewId) => iframeElement,
);
return Directionality(
textDirection: TextDirection.ltr,
child: Center(
child: SizedBox(
width: double.infinity,
height: double.infinity,
child: HtmlElementView(viewType: 'webpage'),
),
),
);
【讨论】:
HtmlElementView 小部件并使用来自dart:html 的IFrameElement 的onLoad 流。您可以查看文档here。这是一个 EventStream,您可以在回调中监听并执行您需要的逻辑。
如果有人在加载移动端时遇到问题,那就继续吧,它可以在 Flutter Android、Ios、Web 中使用:-
EasyWebView(
height: 400,
width: 1000,
isHtml: false, // Use Html syntax
isMarkdown: false, // Use markdown syntax
convertToWidgets: true,
src: Uri.dataFromString('<html><body><iframe allow="camera *;microphone *" height="100%" width="100%"'
' frameborder="0" src="$url"></iframe></body></html>', mimeType: 'text/html').toString(),
),
你们可以使用任何 webview 在你的 web/app 中加载任何网页,使用 html 中的 Url 只需更改 src = "$url" :)
【讨论】: