Dart实战:用 AnimationController 和 Tween 创建动画 Widget
要在Dart中创建一个动画Widget,你可以使用`AnimationController`和`Tween`。以下是一个简单的示例,展示了如何创建一个在0到1之间变化的动画: ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('动画示例')), body: Center(child: AnimatedBox()), ), ); } } class AnimatedBox extends StatefulWidget { @override _AnimatedBoxState createState() => _AnimatedBoxState(); } class _AnimatedBoxState extends State<AnimatedBox> with SingleTickerProviderStateMixin { AnimationController _controller; Animation<double> _animation; @override void initState() { super.initState(); _controller = AnimationController( duration: const Duration(seconds: 2), vsync: this, )..repeat(reverse: true); _animation = Tween<double>(begin: 0, end: 1).animate(_controller); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return FadeTransition( opacity: _animation, child: Container( width: 100, height: 100, color: Colors.blue, ), ); } } ``` 在这个示例中,我们创建了一个名为`AnimatedBox`的自定义`StatefulWidget`。在`_AnimatedBoxState`类中,我们初始化了一个`AnimationController`和一个`Tween`。`AnimationController`用于控制动画的播放,而`Tween`定义了动画的起始值和结束值。 我们在`build`方法中使用`FadeTransition`来应用动画。`FadeTransition`会根据`_animation`的值改变其子部件的透明度。当动画值从0变为1时,部件会从不透明变为完全透明;当动画值从1变为0时,部件会从完全透明变为不透明。通过调用`_controller.repeat(reverse: true)`,我们使动画无限循环地播放。 ######[AI写代码神器 | 592点数解答 | 2024-07-12 09:30:25]
- Python实现:打造交互式Tkinter聊天客户端(GPT | 1469点数解答 | 2024-10-30 13:14:13)322
- 解决 “tween” 模块 “interpolate_property” 函数调用报错的实用指南(GPT | 429点数解答 | 2024-10-23 05:06:31)221
- Java 创建 HTTP POST 请求实现文件上传:代码示例与注意要点 (字节豆包 | 300点数解答 | 2024-12-06 16:07:20)353
- Android开发必备:多种动画API解析及使用注意事项(阿里通义 | 355点数解答 | 2023-11-07 22:46:27)242
- 2 秒动画搞定!“好句子”如何稳停结束位置( | 456点数解答 | 2024-05-19 16:46:15)282
- AIDE编写Xposed软件:参考代码教你拦截Smail类方法名(阿里通义 | 649点数解答 | 2024-10-12 00:15:48)317
- RealtimeMonitoringFragment 代码片段:Android 实时监控功能核心代码剖析(字节豆包 | 30点数解答 | 2024-10-12 10:31:18)310
- 揭秘:Android实时监控片段(RealTimeMonitoringFragment)代码实现(GPT | 531点数解答 | 2024-10-12 10:32:25)284
- JavaScript开发难题破解:模拟“原生”方法及Node.js中的相关应用(阿里通义 | 192点数解答 | 2023-11-09 01:16:49)322
- Spring框架实战:从配置到实现,搞定员工信息查询功能(GPT | 2135点数解答 | 2024-06-12 08:32:35)325
- C++实现顺序存储结构基本操作:初始化、插入、删除等全解析(GPT | 1743点数解答 | 2024-09-26 00:20:17)296
- 8 - 1 数据结构大作业:功能完备、跨平台的资源管理器设计与实现 (GPT | 654点数解答 | 2024-12-04 19:07:22)364