1.首先什么是状态提升
传统的控件绑定方法都是通过查看控件并绑定回调方法,然后直接改变对应的属性,但是在flutter中都是把子组件的属性提升到父组件的属性里面,这就是liftup状态提升,然后父组件通过setState去改变这个属性,然后对应子组件就会rebuild,并把从父组件传到子组件构造函数的属性更新。
2.状态提升会带来什么隐藏问题呢
性能问题,因为setState是全局的,父组件下面的所有子组件都rebuild,这就导致了性能浪费,特别是AnimatedBuild的child,因为动画是没秒60帧或者120帧,也就是说可能一秒钟这个rebuild就要进行60-120次,这是非常大的性能浪费
3.怎么解决上面说的问题
1.普通组件就用const + 子组件名,可以阻止rebuild 2.动画组件 3.利用状态管理框架,比如provider,bloc,他们都有对应的局部刷新方法,比如select