# Flutter_Animation_Performance_Demo **Repository Path**: vper/flutter_animation_performance_demo ## Basic Information - **Project Name**: Flutter_Animation_Performance_Demo - **Description**: No description available - **Primary Language**: Dart - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flutter 动画性能演示 这是一个展示Flutter高性能动画实现的演示项目,通过两种不同的动画技术来展示Flutter中实现流畅动画的最佳实践。 ## 📱 功能展示 本项目包含两种高性能动画示例: 1. **AnimatedBuilder 高性能旋转动画** - 使用`AnimatedBuilder`实现的高性能旋转图标动画 - 展示如何避免不必要的widget重建 - 适合需要频繁更新的简单动画场景 2. **CustomPainter 自定义波浪动画** - 使用`CustomPainter`实现的自定义波浪线动画 - 展示如何通过自定义绘制实现复杂的动画效果 - 适合需要精确控制绘制的复杂动画场景 ## 🚀 快速开始 ### 环境要求 - Flutter SDK 3.10.1 或更高版本 - Android SDK (用于Android模拟器/设备) - Visual Studio 2022 (用于Windows开发) - Android Studio 或 VS Code (推荐) ### 安装步骤 1. 克隆此仓库: ```bash git clone https://github.com/your-username/flutter_animation_performance_demo.git cd flutter_animation_performance_demo ``` 2. 获取依赖: ```bash flutter pub get ``` 3. 启动Android模拟器: ```bash flutter emulators --launch Pixel_9 ``` 4. 运行应用: ```bash flutter run ``` ## 🎯 动画技术详解 ### AnimatedBuilder 旋转动画 `AnimatedBuilder`是Flutter中实现高性能动画的关键组件之一。它允许您只重建动画相关的部分,而不是整个widget树。 ```dart AnimatedBuilder( animation: _controller, builder: (context, child) { return Transform.rotate( angle: _controller.value * 2 * pi, child: child, ); }, child: const Icon( Icons.flutter_dash, size: 100, color: Colors.blue, ), ) ``` **优点:** - 只重建动画相关的部分 - 性能高效,适合简单动画 - 代码简洁易懂 ### CustomPainter 波浪动画 `CustomPainter`允许您完全控制绘制过程,是实现复杂动画效果的强大工具。 ```dart class WavePainter extends CustomPainter { final double progress; WavePainter({required this.progress}); @override void paint(Canvas canvas, Size size) { final paint = Paint() ..color = Colors.blueAccent ..strokeWidth = 3 ..style = PaintingStyle.stroke; final path = Path(); // 波浪参数和绘制逻辑... canvas.drawPath(path, paint); } @override bool shouldRepaint(covariant WavePainter oldDelegate) { return oldDelegate.progress != progress; } } ``` **优点:** - 完全控制绘制过程 - 适合复杂图形和动画 - 可以实现原生难以达到的效果 ## 📊 性能优化技巧 1. **避免不必要的重建** - 使用`AnimatedBuilder`而不是`setState` - 将静态widget作为child传递给动画widget 2. **合理使用CustomPainter** - 在`shouldRepaint`中精确控制重绘时机 - 避免在`paint`方法中进行复杂计算 3. **选择合适的动画控制器** - 对于简单动画,使用`AnimationController` - 对于复杂场景,考虑使用`TickerProviderStateMixin` ## 🔧 开发工具 Flutter提供了强大的开发工具来帮助您优化动画性能: 1. **Flutter DevTools** - 性能分析器 - Widget检查器 - 帧时间线分析 2. **性能叠加层** ```bash flutter run --profile ``` ## 📱 支持平台 - ✅ Android - ✅ iOS - ✅ Windows - ✅ macOS - ✅ Linux - ✅ Web ## 🤝 贡献 欢迎提交问题和拉取请求!如果您有更好的动画实现或性能优化建议,请随时分享。 ## 📄 许可证 本项目采用MIT许可证 - 查看[LICENSE](LICENSE)文件了解详情。 ## 🙏 致谢 - [Flutter](https://flutter.dev/) - 跨平台UI框架 - [Flutter动画文档](https://flutter.dev/docs/development/ui/animations) - 动画实现指南 --- **提示**: 在开发过程中,使用热重载(`r`)可以快速查看动画效果变化,使用热重启(`R`)可以重置整个应用状态。