فهرست منبع

add maintainState to FluroRouter.navigateTo

lukepighetti 5 سال پیش
والد
کامیت
493259e305
1فایلهای تغییر یافته به همراه13 افزوده شده و 3 حذف شده
  1. 13 3
      lib/src/fluro_router.dart

+ 13 - 3
lib/src/fluro_router.dart

@@ -49,6 +49,7 @@ class FluroRouter {
   Future navigateTo(BuildContext context, String path,
       {bool replace = false,
       bool clearStack = false,
+      bool maintainState = true,
       TransitionType transition,
       Duration transitionDuration,
       RouteTransitionsBuilder transitionBuilder,
@@ -57,6 +58,7 @@ class FluroRouter {
         transitionType: transition,
         transitionsBuilder: transitionBuilder,
         transitionDuration: transitionDuration,
+        maintainState: maintainState,
         routeSettings: routeSettings);
     Route<dynamic> route = routeMatch.route;
     Completer completer = Completer();
@@ -65,7 +67,7 @@ class FluroRouter {
       completer.complete("Non visual route type.");
     } else {
       if (route == null && notFoundHandler != null) {
-        route = _notFoundRoute(context, path);
+        route = _notFoundRoute(context, path, maintainState: maintainState);
       }
       if (route != null) {
         if (clearStack) {
@@ -88,11 +90,13 @@ class FluroRouter {
   }
 
   ///
-  Route<Null> _notFoundRoute(BuildContext context, String path) {
+  Route<Null> _notFoundRoute(BuildContext context, String path,
+      {bool maintainState}) {
     RouteCreator<Null> creator =
         (RouteSettings routeSettings, Map<String, List<String>> parameters) {
       return MaterialPageRoute<Null>(
           settings: routeSettings,
+          maintainState: maintainState,
           builder: (BuildContext context) {
             return notFoundHandler.handlerFunc(context, parameters);
           });
@@ -105,7 +109,8 @@ class FluroRouter {
       {RouteSettings routeSettings,
       TransitionType transitionType,
       Duration transitionDuration,
-      RouteTransitionsBuilder transitionsBuilder}) {
+      RouteTransitionsBuilder transitionsBuilder,
+      bool maintainState = true}) {
     RouteSettings settingsToUse = routeSettings;
     if (routeSettings == null) {
       settingsToUse = RouteSettings(name: path);
@@ -141,6 +146,7 @@ class FluroRouter {
           return CupertinoPageRoute<dynamic>(
               settings: routeSettings,
               fullscreenDialog: transition == TransitionType.nativeModal,
+              maintainState: maintainState,
               builder: (BuildContext context) {
                 return handler.handlerFunc(context, parameters);
               });
@@ -148,6 +154,7 @@ class FluroRouter {
           return MaterialPageRoute<dynamic>(
               settings: routeSettings,
               fullscreenDialog: transition == TransitionType.nativeModal,
+              maintainState: maintainState,
               builder: (BuildContext context) {
                 return handler.handlerFunc(context, parameters);
               });
@@ -158,6 +165,7 @@ class FluroRouter {
             settings: routeSettings,
             fullscreenDialog:
                 transition == TransitionType.materialFullScreenDialog,
+            maintainState: maintainState,
             builder: (BuildContext context) {
               return handler.handlerFunc(context, parameters);
             });
@@ -167,6 +175,7 @@ class FluroRouter {
             settings: routeSettings,
             fullscreenDialog:
                 transition == TransitionType.cupertinoFullScreenDialog,
+            maintainState: maintainState,
             builder: (BuildContext context) {
               return handler.handlerFunc(context, parameters);
             });
@@ -179,6 +188,7 @@ class FluroRouter {
         }
         return PageRouteBuilder<dynamic>(
           settings: routeSettings,
+          maintainState: maintainState,
           pageBuilder: (BuildContext context, Animation<double> animation,
               Animation<double> secondaryAnimation) {
             return handler.handlerFunc(context, parameters);