Skip to content

Commit 203891f

Browse files
committed
动画
1 parent 7bb958b commit 203891f

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

lib/flutter_custom_dialog.dart

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ class YYDialog {
234234

235235
Size size = MediaQuery.of(context).size;
236236
CustomDialog(
237+
gravity: gravity,
237238
context: context,
238239
child: Column(
239240
textDirection: TextDirection.ltr,
@@ -277,15 +278,18 @@ class CustomDialog {
277278
Color _barrierColor = Colors.black.withOpacity(.3);
278279
RouteTransitionsBuilder _transitionsBuilder;
279280
bool _barrierDismissible = true;
281+
Gravity _gravity = Gravity.bottom;
280282

281283
CustomDialog({
282284
@required Widget child,
283285
@required BuildContext context,
284286
Duration duration,
285287
Color barrierColor,
286288
RouteTransitionsBuilder transitionsBuilder,
289+
Gravity gravity,
287290
}) : _child = child,
288-
_context = context {
291+
_context = context,
292+
_gravity = gravity {
289293
if (duration != null) {
290294
_duration = duration;
291295
}
@@ -324,17 +328,35 @@ class CustomDialog {
324328
Animation<double> animation,
325329
Animation<double> secondaryAnimation,
326330
Widget child) {
327-
// return FadeTransition(
328-
// opacity: CurvedAnimation(
329-
// parent: animation,
330-
// curve: Curves.easeOut,
331-
// ),
332-
// child: child,
333-
// );
334-
Animation<Offset> custom = Tween<Offset>(
335-
begin: Offset(0.0, 1.0),
336-
end: Offset(0.0, 0.0),
337-
).animate(animation);
331+
Animation<Offset> custom;
332+
switch (_gravity) {
333+
case Gravity.top:
334+
custom = Tween<Offset>(
335+
begin: Offset(0.0, -1.0),
336+
end: Offset(0.0, 0.0),
337+
).animate(animation);
338+
break;
339+
case Gravity.left:
340+
custom = Tween<Offset>(
341+
begin: Offset(-1.0, 0.0),
342+
end: Offset(0.0, 0.0),
343+
).animate(animation);
344+
break;
345+
case Gravity.right:
346+
custom = Tween<Offset>(
347+
begin: Offset(1.0, 0.0),
348+
end: Offset(0.0, 0.0),
349+
).animate(animation);
350+
break;
351+
case Gravity.bottom:
352+
default:
353+
custom = Tween<Offset>(
354+
begin: Offset(0.0, 1.0),
355+
end: Offset(0.0, 0.0),
356+
).animate(animation);
357+
break;
358+
}
359+
338360
return SlideTransition(
339361
position: custom,
340362
child: child,

0 commit comments

Comments
 (0)