ListView 中的 WebView 没有分配其尺寸

Sha*_*ram 5 listview webview flutter

是否有可能将WebView(webview_flutter) 放入 aListView而不分配其尺寸但自动采用其高度。我找到的唯一可行的解​​决方案是通过分配高度将 WebView 放入容器中,但我不想分配任何高度,我只想让它根据其内容占据高度。

我已经尝试了很多解决方案,包括Expanded为此但得到关于无限高度的错误。有什么解决办法吗?

Sha*_*ram 3

很抱歉来晚了,但现在可以正常工作了。

我将 WebView 包装到 SizedBox 中并指定它的高度,如下所示:

              _webViewController
                  .evaluateJavascript("document.body.clientHeight")
                  .then((height) {
                print("Height of Page is: $height}");
                setState(() {
                      sizedBoxHeight = double.parse(height);
                    });
              });
Run Code Online (Sandbox Code Playgroud)

对于更高级的解决方案,我们可以使用 JavascriptChannels,如下所示:

            javascriptChannels: Set.from([
              JavascriptChannel(
                  name: 'RenderedWebViewHeight',
                  onMessageReceived: (JavascriptMessage message) {
                      setState(() {
                        sizedBoxHeight = double.parse(message.message);
                      });

            ]),
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中,我们可以做这样的事情。

onload="RenderedWebViewHeight.postMessage(document.body.clientHeight);"
Run Code Online (Sandbox Code Playgroud)

现在我们可以看到它动态计算 WebView 的高度,该 WebView 被包装在具有 WebView 高度的 SizedBox 中,因此我们可以将其放入 ListView 中。

更详细的解决方案可以查看webview_flutter_plus

编辑:

 document.documentElement.scrollHeight
Run Code Online (Sandbox Code Playgroud)

是最准确的做事方式。这适用于身体边缘和身体内部物质的边缘向下推动身体。更多信息请参阅如何使用 JavaScript 获取整个文档的高度