Flutter 中的 Animations(一)

本文介绍了如何在 Flutter 中创建非线性动画,使用 CurvedAnimation 和 Curves 实现弹性效果,并添加动画状态监听,使动画无限循环。还探讨了 Dart 中的混入(mixin)概念,以及 .. 符号的用法。
摘要由CSDN通过智能技术生成

// 执行动画
controller.forward();
}

@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘AnimateApp’,
theme: ThemeData(
primaryColor: Colors.redAccent
),
home: Scaffold(
appBar: AppBar(
title: Text(‘AnimateApp’),
),
body: Center(
child: Container(
// 获取动画的值赋给 widget 的宽高
width: animation.value,
height: animation.value,
decoration: BoxDecoration(
color: Colors.redAccent
),
),
)
)
);
}

@override
void dispose() {
// 资源释放
controller.dispose();
super.dispose();
}
}

效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看出上面的动画是线性运动的,我们可以通过 CurvedAnimation 来实现非线性运动的动画代码如下:

controller = AnimationController(
vsync: this, duration: const Duration(milliseconds: 2000));
// 非线性动画
final CurvedAnimation curve = CurvedAnimation(
parent: controller, curve: Curves.elasticOut);
animation = Tween(begin: 50.0, end: 200.0).animate(curve)
…addListener(() {
setState(() {});
});

效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后我们还可以给动画添加状态监听,通过给 Animation 添加 addStatusListener(...) 来监听当前动画的状态,如&

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值