소스 검색

Merge branch 'SvenSchoene-feature_custom_transition_settings'

lukepighetti 5 년 전
부모
커밋
4efd63c857
2개의 변경된 파일15개의 추가작업 그리고 4개의 파일을 삭제
  1. 2 1
      lib/src/common.dart
  2. 13 3
      lib/src/fluro_router.dart

+ 2 - 1
lib/src/common.dart

@@ -36,8 +36,9 @@ class AppRoute {
   dynamic handler;
   dynamic handler;
   TransitionType transitionType;
   TransitionType transitionType;
   Duration transitionDuration;
   Duration transitionDuration;
+  RouteTransitionsBuilder transitionBuilder;
   AppRoute(this.route, this.handler,
   AppRoute(this.route, this.handler,
-      {this.transitionType, this.transitionDuration});
+      {this.transitionType, this.transitionDuration, this.transitionBuilder});
 }
 }
 
 
 enum TransitionType {
 enum TransitionType {

+ 13 - 3
lib/src/fluro_router.dart

@@ -28,11 +28,13 @@ class FluroRouter {
   void define(String routePath,
   void define(String routePath,
       {@required Handler handler,
       {@required Handler handler,
       TransitionType transitionType,
       TransitionType transitionType,
-      Duration transitionDuration = const Duration(milliseconds: 250)}) {
+      Duration transitionDuration = const Duration(milliseconds: 250),
+      RouteTransitionsBuilder transitionBuilder}) {
     _routeTree.addRoute(
     _routeTree.addRoute(
       AppRoute(routePath, handler,
       AppRoute(routePath, handler,
           transitionType: transitionType,
           transitionType: transitionType,
-          transitionDuration: transitionDuration),
+          transitionDuration: transitionDuration,
+          transitionBuilder: transitionBuilder),
     );
     );
   }
   }
 
 
@@ -120,6 +122,11 @@ class FluroRouter {
     }
     }
     AppRouteMatch match = _routeTree.matchRoute(path);
     AppRouteMatch match = _routeTree.matchRoute(path);
     AppRoute route = match?.route;
     AppRoute route = match?.route;
+
+    if (route.transitionDuration != null) {
+      transitionDuration = route.transitionDuration;
+    }
+
     Handler handler = (route != null ? route.handler : notFoundHandler);
     Handler handler = (route != null ? route.handler : notFoundHandler);
     var transition = transitionType;
     var transition = transitionType;
     if (transitionType == null) {
     if (transitionType == null) {
@@ -181,11 +188,14 @@ class FluroRouter {
             });
             });
       } else {
       } else {
         var routeTransitionsBuilder;
         var routeTransitionsBuilder;
+
         if (transition == TransitionType.custom) {
         if (transition == TransitionType.custom) {
-          routeTransitionsBuilder = transitionsBuilder;
+          routeTransitionsBuilder =
+              transitionsBuilder ?? route.transitionBuilder;
         } else {
         } else {
           routeTransitionsBuilder = _standardTransitionsBuilder(transition);
           routeTransitionsBuilder = _standardTransitionsBuilder(transition);
         }
         }
+
         return PageRouteBuilder<dynamic>(
         return PageRouteBuilder<dynamic>(
           settings: routeSettings,
           settings: routeSettings,
           maintainState: maintainState,
           maintainState: maintainState,