对初学者来讲,看完这篇文章,我想你脑瓜子必定是嗡嗡的,这都说的是什么啊。git
不要急躁,开始的我和你是同样的,第一遍看完,彻底不知道在说什么,不明白没关系,请先收藏此文章,而后先去学习下Flutter内置的25种动画组件。程序员
地址:http://laomengit.com/flutter/module/animated_1/。微信
不要仅仅是看,要多写,只有写才能发现问题。工具
当你对动画控件有了必定的了解,在回过头来细细的品一品这篇文章,你会有不同的感觉,你品,你细品。布局
这篇文章的内容是Google 的Flutter工程师Emily原创,我仅仅是翻译,原创地址:https://www.youtube.com/watch?v=GXIJJkq_H8g。性能
从广义上来讲,Flutter动画组件分为两种类型,学习
想想你的动画是基于绘制的,仍是基于核心(组件)的:动画
在Flutter中基于核心(组件)的动画又分为两类:ui
从上面的分类中,咱们不难看出,使用隐式动画控件,代码更简单,并且无需管理AnimationController的生命周期。spa
如何肯定使用隐式动画控件仍是显式动画控件?你须要考虑3个问题:
若是你对这三个问题中的任何一个回答“是”,那么你须要使用显式动画控件,不然你就使用隐式动画控件。
一旦你肯定了使用显式动画控件或者隐式动画控件,这个时候你就须要找到对应的组件,你须要的组件是否已经在Flutter中内置了?
对于隐式组件来讲:
对于显示组件来讲:
自定义一个显式的动画组件须要确认这个动画组件是单独一个组件仍是组件的一部分,
还有最后一件事情须要考虑:若是你发现由CustomPainter引发的性能问题,你能够像AnimatedWidget同样使用它,可是CustomPainer直接绘制到画布上,而无需标准的小部件构建范例,若是使用的好,能够建立一些整洁、丰富的自定义的效果或者节省性能,但若是使用的很差,你的动画可能引发更多的性能问题,就像是手动管理内存同样,要处理好共享指针,为何要用这样用,是否有内存问题,这些问题都要考虑清楚。
最后总结以下图:
若是你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。
同时也欢迎关注个人Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。
Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。