InAppWebView的getContentHeight在Android上始终返回0。

huangapple go评论52阅读模式
英文:

InAppWebView getContentHeight always returns 0 on Android

问题

我使用 InAppWebView 在我们的应用中显示网页内容。
为了确保它仅占用必要的空间,我监听 onLoadStop 回调,然后设置 SizedBox 的高度。

在这里,我尝试获取内容的高度:

final height = await controller.getContentHeight();

但它总是返回 0。

在 iOS 上,我总是能够获得正确的高度。

英文:

I use InAppWebView to display a web content in our app.
To ensure that it only takes the necessary space I listen to the onLoadStop callback to then set a SizedBoxs height.

There I try to get the content height:

final height = await controller.getContentHeight();

But it always returns 0.

On iOS I always get the right height.

答案1

得分: 0

问题在于Android过早调用了Android WebView的onPageFinished回调。答案在这里找到。

添加以下代码解决了这个问题:

if (Platform.isAndroid) {
   await Future.delayed(
      const Duration(milliseconds: 1000),
   );
}

这样可以解决问题,并且

final height = await controller.getContentHeight();

返回了正确的高度。

英文:

The problem is that Android calls the onPageFinished callback for the Android Webview too early. Answer found here.

Adding

if (Platform.isAndroid) {
   await Future.delayed(
      const Duration(milliseconds: 1000),
   );
}

solves the problem and

final height = await controller.getContentHeight();

returns the correct height.

huangapple
  • 本文由 发表于 2023年2月16日 18:11:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/75470713.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定