likes
comments
collection
share

Flutter之flutter_animate

作者站长头像
站长
· 阅读数 18

想要在不处理动画控制器的情况下,为Flutter应用程序快速地添加精美的预置动画吗?那不妨试试flutter_animate。

请用Animate小部件来包装并提供效果列表,就是这样!搞定了!

Animate(
    effects: [FadeEffect(), SlideEffect()]
    child: Text('Hello World!')
)

用链式语法也可达到相同的结果

Text('Hello World!')
    .animate()
    .fade()
    .slide()

若不喜欢默认的动画,你可就时间点之类的稍加调整,

设置delay、duration或curve这些函数

Text('Hello World!')
    .animate()
    .fade(delay: 500.ms)
    .slideY()

Flutter之flutter_animate

Text('Hello World!')
    .animate()
    .fade(duration: 2000.ms)
    .slideY()

Flutter之flutter_animate

Text('Hello World!')
    .animate()
    .fade()
    .slideY(cure: Curves.easeIn)

Flutter之flutter_animate

flutter_animate还为num类加入实用的扩展方法让时长更容易设置

Flutter之flutter_animate

动画多有参数begin和end来控制动画的开始和结束状态

Flutter之flutter_animate

无论是滑动效果slide的定位

Text('Hello World!')
    .animate()
    .slideY(begin:2, end: 5)

Flutter之flutter_animate

或是淡入淡出效果的不透明度 ``` Text('Hello World!') .animate() .fade(begin: .1, end: .8) ```

Flutter之flutter_animate

许多动画都为这类特效提供了额外的参数

Text('Hello World!')
    .animate()
    .tint(color: Colors.amber)

Flutter之flutter_animate

要依序链接所属效果请使用扩展方法then(),它会等待之前的动画效果都跑完后才会继续执行后续的效果。

Text('Hello World!')
    .animate()
    .tint(color: Colors.amber)
    .then()
    .shake()

Flutter之flutter_animate

你也可以将动画添加到小部件的列表中,将小部件包装在Animate列表中或使用扩展方法animate(),指定间隔参数interval,让Animate列表中的效果交错执行

[Widget, Widget, Widget]
    .animate(interval: .250.seconds)
    .slideX()

Flutter之flutter_animate

最后,若希望扩展依状态变化反应,请以target目标值参数来指定开始执行动画的确切时间

Text('Hello World!')
    .animate(target: _counter == 6 ? 1 : 0)
    .slideX()

Flutter之flutter_animate

原文翻译自视频:视频地址