Code:
import 'dart:async';
import 'package:animations/animations.dart';
import 'package:flutter/material.dart';
class SplashScreen2 extends StatefulWidget {
@override
_SplashScreen2State createState() => _SplashScreen2State();
}
class _SplashScreen2State extends State<SplashScreen2> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Center(
child: OpenContainer(
closedBuilder: (_, openContainer) {
return Container(
height: 60,
width: 220,
child: Center(
child: Text(
'View Splash Animation',
textAlign: TextAlign.center,
),
),
);
},
openColor: Colors.white,
closedElevation: 20,
closedShape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
transitionDuration: Duration(milliseconds: 700),
openBuilder: (_, closeContainer) {
return SplashScreen2Sub();
},
),
),
),
);
}
}
class SplashScreen2Sub extends StatefulWidget {
@override
_SplashScreen2SubState createState() => _SplashScreen2SubState();
}
class _SplashScreen2SubState extends State<SplashScreen2Sub> {
bool _a = false;
@override
void initState() {
super.initState();
Timer(Duration(milliseconds: 700), () {
setState(() {
_a = !_a;
});
});
Timer(Duration(milliseconds: 2000), () {
Navigator.of(context)
.pushReplacement(SlideTransitionAnimation(SecondPage()));
});
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
double _height = MediaQuery.of(context).size.height;
double _width = MediaQuery.of(context).size.width;
return Scaffold(
backgroundColor: Colors.white,
body: Stack(
children: [
AnimatedContainer(
duration: Duration(milliseconds: 2000),
curve: Curves.fastLinearToSlowEaseIn,
width: _a ? _width : 0,
height: _height,
color: Colors.black,
),
Center(
child: Text(
'APP NAME',
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 30,
color: Colors.white,
),
),
),
],
),
);
}
}
class SlideTransitionAnimation extends PageRouteBuilder {
final Widget page;
SlideTransitionAnimation(this.page)
: super(
pageBuilder: (context, animation, anotherAnimation) => page,
transitionDuration: Duration(milliseconds: 2000),
transitionsBuilder: (context, animation, anotherAnimation, child) {
animation = CurvedAnimation(
curve: Curves.fastLinearToSlowEaseIn,
parent: animation,
);
return SlideTransition(
position: Tween(begin: Offset(1.0, 0.0), end: Offset(0.0, 0.0))
.animate(animation),
textDirection: TextDirection.rtl,
child: page,
);
});
}
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('HOME'),
centerTitle: true,
brightness: Brightness.dark,
backgroundColor: Colors.black),
body: Center(
child: Text(
"HOME PAGE",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20,
),
),
),
);
}
}
0 Comments