Closed ZhangsBye closed 1 year ago
点击导航栏的返回按钮则会及时Dispose,不存在此问题。只有侧滑时会有这个问题。请教下,要如何解决呢?
直接运行Example能够复现;
1: 这个问题对我们项目影响还比较大,所以我特地下载了Up主的 Example 调试,发现侧滑也未走dispose 2: 另外发现的是:点击右上角的返回是先pop后走的 NavigationVc的Delegate函数 didShow;但是侧滑时是先走的didShow,然后走的Pop,不知道这个是否有影响呢?
我是运行调试的Example 发现侧滑未走dispose;
走不走 dispose 先不说,页面栈卡死有没有?
页面栈没有卡死
那这个问题,影响是啥?
抱歉以上可能描述的不太清晰;
我们也遇到了这个问题,所以也特地下载了example去测试,发下example也有同样的问题,详细描述下: 从原生页面A push 进入到flutter页面flutter1,然后从flutter1再push进入原生页面B,此时从原生B点击某个按钮push进入flutter页面flutter2,然后从flutter2页面手势侧滑返回页面B,flutter2不走dispose,最后从页面B再侧滑返回flutter1时,flutter1会先显示flutter2的页面(因为flutter2没有dispose),导致flutter1显示异常 如果点击左上角返回按钮是ok的,这个对用户体验还是比较大的,麻烦作者验证一下
查看example的flutter2侧滑,返回flutter1页面时,页面会闪动下正常显示flutter1页面,应该是作者做了处理,但查看生命周期,侧滑未执行dispose,导致flutter2页面未销毁或者延迟销毁。 在项目中我连续跳转两个flutter1和2页面,在第二个flutter2页面栈顶使用侧滑返回和点击导航按钮的返回,侧滑会导致栈内上一个flutter1页面不能正常显示,调试查看生命周期过程,发现侧滑Flutter2后并未执行 dispose,但点击Flutter2页面的返回按钮正常执行dispose。
上传了一个视频,可以看下(显示第一个flutter页面的时候先闪动的显示了一下第二个flutter页面的UI)
这个情况是处理过的,不过后面的版本啥可能又出问题了吧,最近会看看
能说一下哪个版本是好的不,我们去下载旧版本也是可以的,因为比较影响用户体验,我们会比较着急,感谢~~
可能是 1.x
Example 里面好像就是1.4.x,能帮忙确定下具体版本号不~
这个对应的是 Flutter 1.x ,估计不是你想要的
那辛苦能尽快修复下不,我们比较着急😢
我只能尽量的快了,下周一之前应该会解决
这个就是闪了一下,不注意可能也看不到
感谢,尽快修复就行,因为我们项目跟example的表现还有点区别,我们项目不是闪一下,而是会把第二个flutter页面的ui一直覆盖在第一个flutter页面上,除非侧滑一下第一个flutter页面才会消失…
所以你应该看下你项目上,其他的路由生命周期走了没有。。。dispose 晚走应该不是这个现象
应该就是跟dispose不走有关,因为点击左上角返回按钮都是好的,侧滑就有问题。 我测试了项目内的所有flutter页面都会有这个问题,全部都是侧滑有问题,点击左上角返回按钮没问题
可能吧,不过 example 就只是闪一下,如果能更快先解决你的问题,你可以对比啥区别在哪里
我们可以先查一下区别在哪,不过就算example的效果我们也上线不了,这个我们产品验收比较严,这个体验通过不了😭
刚才试了一下1.x的几个版本,都有这个问题..
我在 Flutter 3.0.5 上不能复现这个问题,你们啥版本呢?
我的是2.13.0-0.4.pre,我复现这个问题不是运行的flutter项目,是直接通过xcode运行的Runner
方便的话,QQ群聊
无法解决,目前的现象是 dispose 在 Flutter 页面出现的时候,会最终被调用,不影响使用。
你可以试试 feature/flutter3 这个分支,不过 api 会有一些调整,虽然也没有走 dispose,但这种情况下会销毁引擎,应该不会出现页面闪一下的情况了
好的
在最后Flutter页面侧滑后,返回上一个原生页面,再侧滑返回Flutter页面,查看在栈顶的Flutter页面侧滑时,并未执行Dispose函数。(如果栈内还有其他Flutter页面时,不会执行Dispose)