import
'package:flutter/material.dart'
;
void
main() {
runApp(MyApp());
}
class
MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return
MaterialApp(
theme: ThemeData(
primarySwatch: Colors.green,
),
debugShowCheckedModeBanner:
false
,
home: OpenDialog(),
);
}
}
class
OpenDialog extends StatelessWidget {
void
_showAnimatedDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) {
return
AnimatedAlertDialog();
},
);
}
@override
Widget build(BuildContext context) {
return
Scaffold(
appBar: AppBar(
title: Text(
'Animated AlertDialog Example'
),
),
body: Center(
child: ElevatedButton(
onPressed: () {
_showAnimatedDialog(context);
},
child: Text(
'Show Animated Dialog'
),
),
),
);
}
}
class
AnimatedAlertDialog extends StatefulWidget {
@override
_AnimatedAlertDialogState createState() => _AnimatedAlertDialogState();
}
class
_AnimatedAlertDialogState extends State<AnimatedAlertDialog>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<
double
> _scaleAnimation;
@override
void
initState() {
super.initState();
_controller = AnimationController(
vsync:
this
,
duration: Duration(milliseconds: 800),
);
_scaleAnimation = Tween<
double
>(begin: 0.0, end: 1.0).animate(_controller);
_controller.forward();
}
@override
void
dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return
Center(
child: ScaleTransition(
scale: _scaleAnimation,
child: AlertDialog(
title: Text(
"Animated Alert Dialog"
),
content: Text(
"This is an animated AlertDialog."
),
actions: <Widget>[
TextButton(
child: Text(
"Close"
),
onPressed: () {
_controller.reverse();
Navigator.of(context).pop();
},
),
],
),
),
);
}
}