Closed JDongKhan closed 3 years ago
tabbar的子页面层级可能很深,所以希望tabbarView子页面的onLifecycleEvent也能接收的tabbar切换的事件
任何一个tabbar的子页面想要收到切换事件,都可以用ChildPageLifecycleWrapper
把它包裹起来,对于你的demo来说,可以把ChildPageLifecycleWrapper
放在这里Container,包裹起来试下
目前同一个index只允许注册一个子页面接收切换事件,下一个小版本会支持任意多个子页面注册监听
tabbar的子页面层级可能很深,所以希望tabbarView子页面的onLifecycleEvent也能接收的tabbar切换的事件
任何一个tabbar的子页面想要收到切换事件,都可以用
ChildPageLifecycleWrapper
把它包裹起来,对于你的demo来说,可以把ChildPageLifecycleWrapper
放在这里Container,包裹起来试下
这只是一个demo,实际中可能player上面还有好几层,最好的场景直接在player里面处理切换逻辑。 不管在哪加ChildPageLifecycleWrapper都需要从外面传一个index吧或者通过context自己查找。
目前同一个index只允许注册一个子页面接收切换事件,下一个小版本会支持任意多个子页面注册监听
最好的方式就是这样,子页面下的随便一个widget都能接受到onLifecycleEvent。
目前还有一个问题,demo中也复现了。
现在有两个页面,第一个页面是处理播放器相关的。当切换到第二个页面跳转时,会发现第一个播放器相关的页面都会收到onLifecycleEvent,这样返回就会漏音。
@chenenyu 不好意思,没懂什么目的。
first_page这几个都不能删,因为它是一个播放页面,它也是可以跳转到其他页面的,只是demo里面没有写,如果从firstpage跳转到下一个页面,需要把播放器暂停掉,返回再恢复播放。
with LifecycleAware, LifecycleMixin
这种用法是给非TableView/PageView场景下的普通页面使用的,不能和ChildPageLifecycleWrapper
这种Widget一起使用。
可以先看下项目自带的demo,里面有tabview的使用场景,tabview嵌套pageview的也有
如果不在firstpage和player处理,就需要在顶层的TabbarViewDemoPage去with LifecycleAware, LifecycleMixin ,这样在N多个类里面交互就会很不方便,您的demo都是在一个类文件相对简单些,而我看设计上是可以在任意widget上去with LifecycleAware, LifecycleMixin的,只是tabbarView切换后会发生一些漏掉的场景问题。
方便的话可以加个联系方式沟通
wx:myheartforapple
您好,目前项目只支持ChildPageLifecycleWrapper的onLifecycleEvent接收切换事件,而实际的业务中,tabbar的子页面层级可能很深,所以希望tabbarView子页面的onLifecycleEvent也能接收的tabbar切换的事件,
看源码ChildPageLifecycleWrapper0.3版本好像去除了分发的操作。
我的demo:https://github.com/JDongKhan/flutter_demo demo中:有TabbarViewFirstPage、TabbarViewSecondPage两个页面,tab切换时,TabbarViewFirstPage和其子页面Player都无法接收到事件