diff --git a/lib/container/boost_container.dart b/lib/container/boost_container.dart
index c522e6eb4c343f5cdd8959b036862734238c1254..eb2c36cb2a0125a150b03bba1c9d694ed6fd63e7 100755
--- a/lib/container/boost_container.dart
+++ b/lib/container/boost_container.dart
@@ -39,9 +39,9 @@ enum ContainerLifeCycle {
 }
 
 typedef BoostContainerLifeCycleObserver = void Function(
-  ContainerLifeCycle state,
-  BoostContainerSettings settings,
-);
+    ContainerLifeCycle state,
+    BoostContainerSettings settings,
+    );
 
 class BoostContainer extends Navigator {
   const BoostContainer({
@@ -52,17 +52,17 @@ class BoostContainer extends Navigator {
     RouteFactory onUnknownRoute,
     List<NavigatorObserver> observers,
   }) : super(
-          key: key,
-          initialRoute: initialRoute,
-          onGenerateRoute: onGenerateRoute,
-          onUnknownRoute: onUnknownRoute,
-          observers: observers,
-        );
+    key: key,
+    initialRoute: initialRoute,
+    onGenerateRoute: onGenerateRoute,
+    onUnknownRoute: onUnknownRoute,
+    observers: observers,
+  );
 
   factory BoostContainer.copy(
-    Navigator navigator, [
-    BoostContainerSettings settings = const BoostContainerSettings(),
-  ]) =>
+      Navigator navigator, [
+        BoostContainerSettings settings = const BoostContainerSettings(),
+      ]) =>
       BoostContainer(
         key: GlobalKey<BoostContainerState>(),
         settings: settings,
@@ -73,9 +73,9 @@ class BoostContainer extends Navigator {
       );
 
   factory BoostContainer.obtain(
-    Navigator navigator,
-    BoostContainerSettings settings,
-  ) =>
+      Navigator navigator,
+      BoostContainerSettings settings,
+      ) =>
       BoostContainer(
         key: GlobalKey<BoostContainerState>(),
         settings: settings,
@@ -110,13 +110,13 @@ class BoostContainer extends Navigator {
 
   static BoostContainerState tryOf(BuildContext context) {
     final BoostContainerState container =
-        context.findAncestorStateOfType<BoostContainerState>();
+    context.findAncestorStateOfType<BoostContainerState>();
     return container;
   }
 
   static BoostContainerState of(BuildContext context) {
     final BoostContainerState container =
-        context.findAncestorStateOfType<BoostContainerState>();
+    context.findAncestorStateOfType<BoostContainerState>();
     assert(container != null, 'not in flutter boost');
     return container;
   }
@@ -161,6 +161,15 @@ class BoostContainerState extends NavigatorState {
   void initState() {
     super.initState();
     backPressedHandler = () => maybePop();
+    final String initRoute = widget.initialRoute ?? Navigator.defaultRouteName;
+    if (initRoute != null && routerHistory.isEmpty) {
+      routerHistory.addAll(
+          widget.onGenerateInitialRoutes(
+              this,
+              widget.initialRoute ?? Navigator.defaultRouteName
+          )
+      );
+    }
   }
 
   @override
@@ -177,22 +186,28 @@ class BoostContainerState extends NavigatorState {
 
   @override
   Future<bool> maybePop<T extends Object>([T result]) async {
+    if(routerHistory.isEmpty) {
+      pop(result);
+      return true;
+    }
+
     final Route<T> route = routerHistory.last as Route<T>;
+
     final RoutePopDisposition disposition = await route.willPop();
     if (mounted) {
-      switch (disposition) {
-        case RoutePopDisposition.pop:
-          pop(result);
-          return true;
-          break;
-        case RoutePopDisposition.doNotPop:
-          return false;
-          break;
-        case RoutePopDisposition.bubble:
-          pop(result);
-          return true;
-          break;
-      }
+    switch (disposition) {
+    case RoutePopDisposition.pop:
+    pop(result);
+    return true;
+    break;
+    case RoutePopDisposition.doNotPop:
+    return false;
+    break;
+    case RoutePopDisposition.bubble:
+    pop(result);
+    return true;
+    break;
+    }
     }
     return false;
   }
@@ -238,10 +253,10 @@ class BoostContainerState extends NavigatorState {
 
   VoidCallback addLifeCycleObserver(BoostContainerLifeCycleObserver observer) {
     return FlutterBoost.singleton.addBoostContainerLifeCycleObserver(
-      (
-        ContainerLifeCycle state,
-        BoostContainerSettings settings,
-      ) {
+          (
+          ContainerLifeCycle state,
+          BoostContainerSettings settings,
+          ) {
         if (settings.uniqueId == uniqueId) {
           observer(state, settings);
         }
diff --git a/lib/container/boost_page_route.dart b/lib/container/boost_page_route.dart
index e3c4d8f4332c5fbbf12b52d10a71b7ae59c47f86..6314347f58b84b9a2ada18f02cd8517bb3a84395 100755
--- a/lib/container/boost_page_route.dart
+++ b/lib/container/boost_page_route.dart
@@ -62,4 +62,9 @@ class BoostPageRoute<T> extends MaterialPageRoute<T> {
       return null;
     }
   }
+
+  @override
+  Future<RoutePopDisposition> willPop() {
+    return Future<RoutePopDisposition>.value(RoutePopDisposition.pop);
+  }
 }