-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: InAppWebView 加载异常(platformView集成显示异常)(必现) #2161
Comments
暂时没有思路,感觉跟生命周期也没关系,因为50%的概率显示,感觉那个地方有缓存,第一次加载失败,第二次就重新加载,反复如此。 |
我们项目中遇到了同样的问题 flutter 3.16.9版本没有问题 3.24.5版本 platformView @加载异常,从日志分析没有异常。希望可以提供解决思路 @0xZOne |
可以先设置 |
触发的原因大概查到了,和#1960 的问题一样,都是 可以看到区别在于3.16中最后只会调用 那么再看 |
根据Flutter 深入探索混合开发的技术演进这篇文章里面所写,另一种解法是在Flutter层调用 PlatformViewsService.synchronizeToNativeViewHierarchy(false); 不过我看这个方法在高版本Flutter SDK里已经没了,不过Java层的方法定义还在,因此可以这么写: SystemChannels.platform_views.invokeMethod('synchronizeToNativeViewHierarchy', false); 其实就是不让用 |
确实,设置了 SystemChannels.platform_views.invokeMethod('synchronizeToNativeViewHierarchy', false); 但是,文档也说明了:那为什么会有把 FlutterSurfaceView 变成了 FlutterImageView 这样的操作?原因其实是为了更好的动画同步和渲染效果。 现在去掉了,demo目前看不出有什么问题,项目中还没验证。这里采用 synchronizeToNativeViewHierarchy,去掉,会有什么影响吗?暂时看不出来。
|
我的想法是如果PlatformView和Flutter上的UI没有复杂的交叉层级堆叠显示的问题,那么就没必要使用 |
嗯,暂时看是的。最好的办法,还是flutter,去修复这个问题,或者看看在什么合适的时机,改变 isPaused 状态。就跟之前手动处理的 platformview 的显示和隐藏一样。 |
这个应该很难让Flutter去修改了,因为纯Flutter不存在跨Activity切换Surface的情况。真要 |
最近苹果升级到 18.2 版本,必须得升级到 3.27.1,然后这个修改,又无效化了。 设置了 |
这里增加了 initializePlatformViewIfNeeded(viewId),导致 return 了。 导致,后面的 contains 为false,然后platformView就没有显示。 |
我去flutter里面也增加了提问,看看那边有什么解释。 |
我调试运行后,方法 onBeginFrame,在运行几次以后,后面不会运行 onDisplayOverlaySurface, 3.27.1: 运行几次以后: 暂时不清楚原因。 我看跟方法改动:
关系不大。 |
我这边在flutter boost的example中的 |
需要增加代码:
最后我的回复,我下午尝试复现了:flutter/flutter#160490 |
@joechan-cq |
@joechan-cq |
我用inAppWebView的项目,加 |
如你之前所说,修改isPaused的值应该就行了 |
需要用3.27.1的flutter版本。 修改isPaused,我晚点试试。 |
是的, 我用的就是3.27.1的Flutter。这么看,可能和设备也有关系 |
看engine那边的提交记录,确实和设备GPU型号有关,另外不用Impeller估计也没这个问题。 |
我这边验证了小米+oppo,一共4台设置,都是必白屏。也可能这几台设备都差不多吧。 |
我验证了,单独反射调用,时机上不好弄,在 FlutterEngineAttachmentListener 里面调用,反射不行,找到 flutterView的方法,revertImageView 里面有调用 resume,使用以后,是可行的。
|
请描述遇到的问题,以及您所期望的正确的结果
flutter版本从3.16.9升级到3.24.5(升级到3.19.0,也是一样),
同样的代码,FlutterFragment 显示的 platformView 加载异常。
希望显示正常。
请说明如何操作会遇到上述问题
出现方式:
1、点击 open flutter fragment page
2、切换 tab
必现。
问题视频:
https://github.com/user-attachments/assets/3db5bae0-58dd-420a-9328-1ebfafce9370
在下面填入关键复现代码
flutter版本从3.16.9升级到3.24.5(升级到3.19.0,也是一样),
InAppWebView 加载的view,50%会加载异常,白屏或者是加载完成以后动不了
代码:
example.zip
复现的平台
Both
Flutter SDK版本
3.24.5
FlutterBoost版本
5.0.1,5.0.2
是否延迟初始化FlutterBoost
No
解决方案
The text was updated successfully, but these errors were encountered: