Line data Source code
1 : import 'package:flutter/material.dart';
2 : import 'package:nav/nav.dart';
3 : import 'package:nav/route/blink_route_builder.dart';
4 : import 'package:nav/route/fade_route_builder.dart';
5 : import 'package:nav/route/ripple_route_builder.dart';
6 : import 'package:nav/route/slide_route_builder.dart';
7 :
8 : // ignore: constant_identifier_names
9 : enum NavAni { Left, Right, Top, Bottom, Fade, Ripple, Blink }
10 :
11 : extension NavAniExt on NavAni {
12 1 : Route<T> createRoute<T>(Widget screen, BuildContext context, int durationMs) {
13 : switch (this) {
14 1 : case NavAni.Left:
15 1 : return SlideFromLeftRouteBuilder<T>(screen, durationMs: durationMs);
16 1 : case NavAni.Right:
17 1 : return Nav.getPushRightRoute<T>(screen,
18 : context: context, prohibitSwipeBack: false, durationMs: durationMs);
19 1 : case NavAni.Top:
20 1 : return SlideFromTopRoute<T>(screen, durationMs: durationMs);
21 1 : case NavAni.Bottom:
22 1 : return SlideFromBottomRoute<T>(screen, durationMs: durationMs);
23 1 : case NavAni.Fade:
24 1 : return FadeRouteBuilder<T>(screen, durationMs: durationMs);
25 1 : case NavAni.Blink:
26 1 : return BlinkRouteBuilder<T>(screen);
27 1 : case NavAni.Ripple:
28 3 : final height = MediaQuery.of(context).size.height;
29 3 : final width = MediaQuery.of(context).size.width;
30 :
31 1 : return RippleRouteBuilder<T>(screen,
32 2 : maxRadius: height + width / 2,
33 : centerAlignment: Alignment.bottomRight,
34 : centerOffset: const Offset(0, 0),
35 : minRadius: 10,
36 : durationMs: durationMs);
37 : }
38 : }
39 : }
|