|
@@ -1,3 +1,5 @@
|
|
|
+import 'dart:async';
|
|
|
+
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'controller.dart';
|
|
@@ -7,7 +9,6 @@ class SplashPage extends GetView<SplashController> {
|
|
|
|
|
|
@override
|
|
|
Widget build(BuildContext context) {
|
|
|
- // TODO:
|
|
|
return const ImageAnimation();
|
|
|
}
|
|
|
}
|
|
@@ -21,29 +22,42 @@ class ImageAnimation extends StatefulWidget {
|
|
|
|
|
|
class _ImageAnimationState extends State<ImageAnimation>
|
|
|
with SingleTickerProviderStateMixin {
|
|
|
- late AnimationController _controller;
|
|
|
+ late final SplashController _controller;
|
|
|
+ late AnimationController _animationController;
|
|
|
late Animation<double> _animation;
|
|
|
|
|
|
@override
|
|
|
void initState() {
|
|
|
super.initState();
|
|
|
|
|
|
+ _controller = Get.find<SplashController>();
|
|
|
+
|
|
|
+ final animationCompleter = Completer<void>();
|
|
|
+
|
|
|
+ Future.wait([
|
|
|
+ _controller.loadData(),
|
|
|
+ animationCompleter.future,
|
|
|
+ ]).then((_) {
|
|
|
+ // 等待动画和数据加载,全部完成后跳转路由
|
|
|
+ _controller.onRouteTo();
|
|
|
+ });
|
|
|
+
|
|
|
// 创建动画控制器
|
|
|
- _controller = AnimationController(
|
|
|
+ _animationController = AnimationController(
|
|
|
duration: const Duration(milliseconds: 4200),
|
|
|
vsync: this,
|
|
|
);
|
|
|
|
|
|
// 创建动画
|
|
|
- _animation = Tween<double>(begin: 0, end: 1).animate(_controller);
|
|
|
+ _animation = Tween<double>(begin: 0, end: 1).animate(_animationController);
|
|
|
|
|
|
// 启动动画
|
|
|
- _controller.forward();
|
|
|
+ _animationController.forward();
|
|
|
|
|
|
- _controller.addStatusListener((status) {
|
|
|
+ _animationController.addStatusListener((status) {
|
|
|
if (status == AnimationStatus.completed) {
|
|
|
// 动画结束
|
|
|
- Get.find<SplashController>().onRouteTo();
|
|
|
+ animationCompleter.complete();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -51,7 +65,7 @@ class _ImageAnimationState extends State<ImageAnimation>
|
|
|
@override
|
|
|
void dispose() {
|
|
|
// 销毁动画控制器
|
|
|
- _controller.dispose();
|
|
|
+ _animationController.dispose();
|
|
|
super.dispose();
|
|
|
}
|
|
|
|