import 'package:flutter/material.dart'; import 'package:flutter_app/pages/SplashScreen.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.green, //定義主題風格 primarySwatch ), home: SplashScreen(), ); } }
import 'package:flutter/material.dart'; import '../MyHomePage.dart'; class SplashScreen extends StatefulWidget { _SplashScreenState createState() => _SplashScreenState(); } class _SplashScreenState extends State<SplashScreen> with SingleTickerProviderStateMixin { AnimationController _controller; Animation _animation; void initState() { super.initState(); _controller = AnimationController(vsync:this,duration:Duration(milliseconds:3000)); _animation = Tween(begin: 0.0,end:1.0).animate(_controller); /*動畫事件監聽器, 它可以監聽到動畫的執行狀態, 我們這里只監聽動畫是否結束, 如果結束則執行頁面跳轉動作。 */ _animation.addStatusListener((status){ if(status == AnimationStatus.completed){ Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute(builder: (context)=>MyHomePage()), (route)=> route==null); } }); //播放動畫 _controller.forward(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return FadeTransition( //透明度動畫組件 opacity: _animation, //執行動畫 child: Image.network( //網絡圖片 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1546851657199&di=fdd278c2029f7826790191d59279dbbe&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F0112cb554438090000019ae93094f1.jpg%401280w_1l_2o_100sh.jpg', scale: 2.0, //進行縮放 fit:BoxFit.cover // 充滿父容器 ), ); } }