如何在flutter web中动态更改iframe的src?

Posted

技术标签:

【中文标题】如何在flutter web中动态更改iframe的src?【英文标题】:how to change src of iframe dynamically in the flutter web? 【发布时间】:2021-05-31 19:05:47 【问题描述】:

我正在尝试设置每次 src 更改时我都会解析的新 URL(即 html 字符串)。但是使用此代码,我只能显示第一个 src,并且每次都不会更改并显示相同的输出 src。 类 IframeView 扩展 StatefulWidget 字符串网址;

frameView(this.url);

@override
_IframeViewState createState() => _IframeViewState(url);


class _IframeViewState extends State<IframeView> 
String url;
_IframeViewState(this.url);
final html.IFrameElement _iframeElement = html.IFrameElement();

 Widget _iframeWidget;


 @override
 void initState() 
 _iframeElement.height = '500';
_iframeElement.width = '500';
_iframeElement.srcdoc = widget.url;
_iframeElement.style.border = 'none';

// print("src printing");
// print(_iframeElement.srcdoc);
// print("widget url");
// print(widget.url);



ui.platformViewRegistry.registerViewFactory('iframeElement', (int viewId) 
  return _iframeElement;
);

_iframeWidget = HtmlElementView(
  key: UniqueKey(),
  viewType: 'iframeElement',
);

super.initState();


@override
void didUpdateWidget(IframeView oldWidget) 
super.didUpdateWidget(oldWidget);
print("from did update widget");
print(_iframeElement.srcdoc);
_iframeElement.srcdoc = widget.url;


@override
Widget build(BuildContext context) 
return Container(
  margin: EdgeInsets.only(top: 50),
  child: _iframeWidget,
);


【问题讨论】:

【参考方案1】:

我正在使用 _iframeElement.src = widget.url(不是 .srcdoc)并使用重绘功能进行更新。

static redraw(String newLink, String newTitle) 
IFrameElement element = document.getElementById('contentz');
element.src = newLink;

【讨论】:

以上是关于如何在flutter web中动态更改iframe的src?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Web iFrame 奇怪的行为

如何使用 jquery 动态更改 iframe 中的内容?

如何根据 iframe 中的动态内容更改 iframe 的高度?

当我在 iframe 中编辑时,如何自动更改 Html 页面的内容

Flutter Web 监听通过 iFrame 发布的事件

Flutter 动态更改应用程序启动图标