gpt4 book ai didi

Flutter webview loadUrl 方法无法正常工作

转载 作者:行者123 更新时间:2023-12-05 07:08:57 27 4
gpt4 key购买 nike

我有一个测试页面,可以为测试的每个问题从 HTML 加载数据。每当我从 HTML 中获取视频作为 iFrame 时,我都会将其解析为数据 URI,然后在 WebView 中显示该视频。我使用同一页面来回答所有问题。当我点击下一个问题时,我使用以下代码在同一 WebView 中显示新视频。

webviewController.loadUrl(newUrl) 

除非我在同一页面中有两个或更多视频,否则这完全可以正常工作。当同一页面中有两个或更多视频时。下一页中的视频显示相同的先前视频。

下面是我如何从 html 渲染我的视频的代码。

Widget renderVideo(dom.Element iframe) {
String initialUrl =
Uri.dataFromString(iframe, mimeType: 'text/html')
.toString();
if (testBloc.webViewController != null) {
testBloc.webViewController.loadUrl(initialUrl);
}
return Container(
width: 300,
height: 350,
child: WebView(
initialUrl: initialUrl,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController controller) {
testBloc.webViewController = controller;
controller.loadUrl(initialUrl);
},
),
);
}

所以每次有iframe都会在页面中调用这个方法。所以当页面中只有一个视频时,这将被调用一次。当页面中有两个或更多视频时,将调用两次或更多次创建与 webviews 一样多的视频。每当我在单个页面中遇到两个或多个视频时,即将到来的页面 webview 将显示与多个视频页面中相同的视频。

例如:

Page 1: It has one video. It will be displayed in the webview.

Page 2: If it has two or more video. It will be displayed in as many webviews.

Page 3: And then the page followed by the multi video page does not display its own video. Instead it
displays the video of the page 2. All the upcoming pages from here also display the video of the page 2.

我找不到发生这种情况的原因以及解决方法。谁能在这里指导我。

我很抱歉,如果我没有正确解释它或者我已经详细阐述了它。也许阅读示例可能会让您清楚地理解问题。

提前致谢。

最佳答案

您可能需要将 loadUrl() 包装在 setState() 中以更新 WebViewController 的 loadUrl。这应该使用新的 URL 重建 WebView。

setState((){
testBloc.webViewController.loadUrl(newUrl)
});

关于Flutter webview loadUrl 方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61781440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com