flutter - Flutter Web 中的 WebView
问题描述
我正在尝试在 Flutter for Web 中显示 Web 视图,但出现以下错误:
PlatformException(Unregistered factory, No factory registered for viewtype 'plugins.flutter.io/webview', null)
有没有办法在 Flutter Web 中显示 WebView ?
解决方案
编辑:这是截至 2021 年 5 月 16 日的可运行示例:
import 'dart:html';
import 'package:flutter/material.dart';
import 'dart:ui' as ui;
void main() {
// ignore: undefined_prefixed_name
ui.platformViewRegistry.registerViewFactory(
'hello-world-html',
(int viewId) => IFrameElement()
..width = '640'
..height = '360'
..src = 'https://www.youtube.com/embed/IyFZznAk69U'
..style.border = 'none');
runApp(Directionality(
textDirection: TextDirection.ltr,
child: SizedBox(
width: 640,
height: 360,
child: HtmlElementView(viewType: 'hello-world-html'),
),
));
}
这篇文章的其余部分只是复制了上面的内容,并且是原作者的原帖
您首先需要执行 platformViewRegistry:
ui.platformViewRegistry.registerViewFactory(
'hello-world-html',
(int viewId) => IFrameElement()
..width = '640'
..height = '360'
..src = 'https://www.youtube.com/embed/IyFZznAk69U'
..style.border = 'none');
看看那个例子。在该示例中,旧库已导入(在 29.09.19 上),但如果您在“flutter”上更改“flutter_web”,它必须工作。
此外,您不仅可以使用“IFrameElement”,还可以是常规 html:
ui.platformViewRegistry.registerViewFactory("simple_div", (int viewId) {
DivElement element = DivElement();
...
return element;
推荐阅读
- laravel - 如何使用 laravel 从数据透视表中获取产品名称?
- java - 向 HTML“img src”选项添加高度或宽度时未加载图像
- ios - 保存状态 iOS - 离开应用程序时保存值 - Xamarin
- node.js - 尝试在 Electron 桌面应用程序中使用 oauth 流(使用 spotify API)?
- ruby-on-rails - 如何在 bootstrap 的 svg 图标上使用 link_to 函数
- r - 如何使用 Loops 或 Lapply 从矩阵中生成 100 个新变量?
- node.js - 如何从另一个创建 POST localhost 的应用程序中侦听或获取 React 应用程序中的 json?
- javascript - 如何在android中将javascript localstorage.setItem注入webview?
- javascript - 如何使用 FormData() 从 React Js 向 Nodejs、MongoDB 发送对象数组?
- python - Python3 - 如何在 pygame 混音器中改变声音的音量