From 62f44a98bcac75937ede3082545f7ffcfe215e8c Mon Sep 17 00:00:00 2001
From: xuanwu <gzhongcheng@qq.com>
Date: Thu, 6 Jun 2019 18:43:03 +0800
Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E4=BA=86flutter?=
 =?UTF-8?q?=E4=B8=8EiOS=E5=8E=9F=E7=94=9F=E4=BE=A7=E6=BB=91=E5=86=B2?=
 =?UTF-8?q?=E7=AA=81=E7=9A=84=E4=B8=80=E7=A7=8D=E8=A7=A3=E5=86=B3=E6=96=B9?=
 =?UTF-8?q?=E6=A1=88=EF=BC=9A=20=09=20=20https://juejin.im/post/5cf8e4b96f?=
 =?UTF-8?q?b9a07ed440f1d8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../NavigationServiceRegister.java            |   1 +
 .../NavigationService_flutterCanPop.java      |  52 ++++++++++++++++++
 example/ios/.symlinks/plugins/flutter_boost   |   2 +-
 example/ios/.symlinks/plugins/xservice_kit    |   2 +-
 example/ios/Podfile.lock                      |  10 ++--
 example/ios/Runner.xcodeproj/project.pbxproj  |   4 --
 .../UserInterfaceState.xcuserstate            | Bin 0 -> 35089 bytes
 .../xcdebugger/Breakpoints_v2.xcbkptlist      |   5 ++
 example/ios/Runner/DemoRouter.m               |   5 ++
 example/lib/main.dart                         |   6 ++
 example/lib/simple_page_widgets.dart          |   6 +-
 ios/Classes/Boost/FLBPlatform.h               |   3 +
 .../Container/FLBFlutterViewContainer.m       |   2 +
 .../NavigationService_flutterCanPop.h         |  16 ++++++
 .../NavigationService_flutterCanPop.mm        |  35 ++++++++++++
 .../service/Service_NavigationService.h       |   4 +-
 .../service/Service_NavigationService.mm      |  12 +++-
 .../handlers/NavigationService_canPop.dart    |  39 +++++++++++++
 .../service/NavigationService.dart            |   6 ++
 .../service/NavigationServiceRegister.dart    |   2 +
 lib/container/container_manager.dart          |   3 +
 21 files changed, 199 insertions(+), 16 deletions(-)
 create mode 100644 android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationService_flutterCanPop.java
 create mode 100644 example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/UserInterfaceState.xcuserstate
 create mode 100644 example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
 create mode 100644 ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.h
 create mode 100644 ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.mm
 create mode 100644 lib/AIOService/NavigationService/handlers/NavigationService_canPop.dart

diff --git a/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationServiceRegister.java b/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationServiceRegister.java
index b7130bb..f731f01 100755
--- a/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationServiceRegister.java
+++ b/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationServiceRegister.java
@@ -33,6 +33,7 @@
           NavigationService_pageOnStart.register();
           NavigationService_openPage.register();
           NavigationService_closePage.register();
+          NavigationService_flutterCanPop.register();
       }
  
  }
\ No newline at end of file
diff --git a/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationService_flutterCanPop.java b/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationService_flutterCanPop.java
new file mode 100644
index 0000000..d0dfdf6
--- /dev/null
+++ b/android/src/main/java/com/taobao/idlefish/flutterboost/NavigationService/NavigationService_flutterCanPop.java
@@ -0,0 +1,52 @@
+package com.taobao.idlefish.flutterboost.NavigationService;
+
+import android.util.Log;
+
+import com.taobao.idlefish.flutterboost.FlutterBoostPlugin;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import fleamarket.taobao.com.xservicekit.handler.MessageHandler;
+import fleamarket.taobao.com.xservicekit.handler.MessageResult;
+import fleamarket.taobao.com.xservicekit.service.ServiceGateway;
+
+public class NavigationService_flutterCanPop implements MessageHandler<Boolean>{
+    private Object mContext = null;
+
+
+    private boolean onCall(MessageResult<Boolean> result,Boolean canPop){
+        return true;
+    }
+
+    @Override
+    public boolean onMethodCall(String name, Map args, MessageResult<Boolean> result) {
+        return this.onCall(result,(Boolean) args.get("canPop"));
+    }
+
+    @Override
+    public List<String> handleMessageNames() {
+        List<String> h = new ArrayList<>();
+        h.add("flutterCanPop");
+        return h;
+    }
+    @Override
+    public Object getContext() {
+        return mContext;
+    }
+
+    @Override
+    public void setContext(Object obj) {
+        mContext = obj;
+    }
+    @Override
+    public String service() {
+        return "NavigationService";
+    }
+
+    public static void register(){
+        ServiceGateway.sharedInstance().registerHandler(new NavigationService_flutterCanPop());
+    }
+
+
+}
\ No newline at end of file
diff --git a/example/ios/.symlinks/plugins/flutter_boost b/example/ios/.symlinks/plugins/flutter_boost
index 4ae41bb..dee98da 120000
--- a/example/ios/.symlinks/plugins/flutter_boost
+++ b/example/ios/.symlinks/plugins/flutter_boost
@@ -1 +1 @@
-/Users/jidong/Documents/opensource/flutter_boost
\ No newline at end of file
+/Users/zhongchengguo/Desktop/flutter_boost
\ No newline at end of file
diff --git a/example/ios/.symlinks/plugins/xservice_kit b/example/ios/.symlinks/plugins/xservice_kit
index 2738061..22dda44 120000
--- a/example/ios/.symlinks/plugins/xservice_kit
+++ b/example/ios/.symlinks/plugins/xservice_kit
@@ -1 +1 @@
-/Users/jidong/.pub-cache/hosted/pub.dartlang.org/xservice_kit-0.0.27
\ No newline at end of file
+/Users/zhongchengguo/.pub-cache/hosted/pub.flutter-io.cn/xservice_kit-0.0.29
\ No newline at end of file
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index 057d3ca..f686e22 100755
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -8,20 +8,20 @@ PODS:
 
 DEPENDENCIES:
   - Flutter (from `.symlinks/flutter/ios`)
-  - flutter_boost (from `/Users/jidong/Documents/opensource/flutter_boost/ios`)
-  - xservice_kit (from `/Users/jidong/.pub-cache/hosted/pub.dartlang.org/xservice_kit-0.0.27/ios`)
+  - flutter_boost (from `/Users/zhongchengguo/Desktop/flutter_boost/ios`)
+  - xservice_kit (from `/Users/zhongchengguo/.pub-cache/hosted/pub.flutter-io.cn/xservice_kit-0.0.29/ios`)
 
 EXTERNAL SOURCES:
   Flutter:
     :path: ".symlinks/flutter/ios"
   flutter_boost:
-    :path: "/Users/jidong/Documents/opensource/flutter_boost/ios"
+    :path: "/Users/zhongchengguo/Desktop/flutter_boost/ios"
   xservice_kit:
-    :path: "/Users/jidong/.pub-cache/hosted/pub.dartlang.org/xservice_kit-0.0.27/ios"
+    :path: "/Users/zhongchengguo/.pub-cache/hosted/pub.flutter-io.cn/xservice_kit-0.0.29/ios"
 
 SPEC CHECKSUMS:
   Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296
-  flutter_boost: 24249d12d924d858cf445a84949484bc08bca000
+  flutter_boost: 6a083f2f1b67f9b08724d6c4b280a099d1b40797
   xservice_kit: a86c64372b3e41e7d8e9b1a0b9139866680f525c
 
 PODFILE CHECKSUM: 2a757a7bdc03b37a2814666652fdff1cf694243f
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj
index 5336502..83dec23 100644
--- a/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/ios/Runner.xcodeproj/project.pbxproj
@@ -8,7 +8,6 @@
 
 /* Begin PBXBuildFile section */
 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
-		2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
 		3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
 		3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -45,7 +44,6 @@
 /* Begin PBXFileReference section */
 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
-		2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
 		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
 		3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@@ -105,7 +103,6 @@
 		9740EEB11CF90186004384FC /* Flutter */ = {
 			isa = PBXGroup;
 			children = (
-				2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
 				3B80C3931E831B6300D905FE /* App.framework */,
 				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
 				9740EEBA1CF902C7004384FC /* Flutter.framework */,
@@ -231,7 +228,6 @@
 				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
 				9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
 				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
-				2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
 				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
diff --git a/example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/UserInterfaceState.xcuserstate b/example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000000000000000000000000000000000000..7bdcb07d5b6c2fac9258e3a2bb47a08fad4c8761
GIT binary patch
literal 35089
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
I{eRwu-+udo?f?J)

literal 0
HcmV?d00001

diff --git a/example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
new file mode 100644
index 0000000..ed9a9b4
--- /dev/null
+++ b/example/ios/Runner.xcworkspace/xcuserdata/zhongchengguo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bucket
+   type = "0"
+   version = "2.0">
+</Bucket>
diff --git a/example/ios/Runner/DemoRouter.m b/example/ios/Runner/DemoRouter.m
index f279b3f..f05ab45 100755
--- a/example/ios/Runner/DemoRouter.m
+++ b/example/ios/Runner/DemoRouter.m
@@ -52,4 +52,9 @@
         [self.navigationController popViewControllerAnimated:animated];
     }
 }
+
+- (void)flutterCanPop:(BOOL)canpop {
+    self.navigationController.interactivePopGestureRecognizer.enabled = !canpop;
+}
+
 @end
diff --git a/example/lib/main.dart b/example/lib/main.dart
index 0e5cc08..50dd80e 100755
--- a/example/lib/main.dart
+++ b/example/lib/main.dart
@@ -33,11 +33,17 @@ class _MyAppState extends State<MyApp> {
     FlutterBoost.handleOnStartPage();
   }
 
+  Map<String, WidgetBuilder> routes = {
+    "second": (BuildContext context) =>
+        SecondRouteWidget(),
+  };
+
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
         title: 'Flutter Boost example',
         builder: FlutterBoost.init(postPush: _onRoutePushed),
+        routes: routes,
         home: Container());
   }
 
diff --git a/example/lib/simple_page_widgets.dart b/example/lib/simple_page_widgets.dart
index 1036200..ab95460 100755
--- a/example/lib/simple_page_widgets.dart
+++ b/example/lib/simple_page_widgets.dart
@@ -12,7 +12,8 @@ class FirstRouteWidget extends StatelessWidget {
         child: RaisedButton(
           child: Text('Open second route'),
           onPressed: () {
-            FlutterBoost.singleton.openPage("second", {}, animated: true);
+            Navigator.pushNamed(context, "second");
+//            FlutterBoost.singleton.openPage("second", {}, animated: true);
           },
         ),
       ),
@@ -31,7 +32,8 @@ class SecondRouteWidget extends StatelessWidget {
         child: RaisedButton(
           onPressed: () {
             // Navigate back to first route when tapped.
-            FlutterBoost.singleton.closePageForContext(context);
+            Navigator.pop(context);
+//            FlutterBoost.singleton.closePageForContext(context);
           },
           child: Text('Go back!'),
         ),
diff --git a/ios/Classes/Boost/FLBPlatform.h b/ios/Classes/Boost/FLBPlatform.h
index 4b19d7d..22acf65 100755
--- a/ios/Classes/Boost/FLBPlatform.h
+++ b/ios/Classes/Boost/FLBPlatform.h
@@ -32,6 +32,9 @@ NS_ASSUME_NONNULL_BEGIN
 //Whether to enable accessibility support. Default value is Yes.
 - (BOOL)accessibilityEnable;
 
+// flutter模块是否还可以pop
+- (void)flutterCanPop:(BOOL)canpop;
+
 @required
 - (void)openPage:(NSString *)name
           params:(NSDictionary *)params
diff --git a/ios/Classes/Container/FLBFlutterViewContainer.m b/ios/Classes/Container/FLBFlutterViewContainer.m
index 0e48ef3..aee3057 100755
--- a/ios/Classes/Container/FLBFlutterViewContainer.m
+++ b/ios/Classes/Container/FLBFlutterViewContainer.m
@@ -283,6 +283,8 @@ static NSUInteger kInstanceCounter = 0;
     
     //Invalidate obsolete screenshot.
     [FLBStackCache.sharedInstance invalidate:self.uniqueIDString];
+    [Service_NavigationService canPopPageName:_name params:_params
+     uniqueId:[self uniqueIDString]];
 }
 
 #pragma mark - Life circle methods
diff --git a/ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.h b/ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.h
new file mode 100644
index 0000000..da4c4f8
--- /dev/null
+++ b/ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.h
@@ -0,0 +1,16 @@
+//
+//  NavigationService_canPop.h
+//  flutter_boost
+//
+//  Created by ZhongCheng Guo on 2019/6/5.
+//
+
+#import "FlutterServiceCallHandler.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NavigationService_flutterCanPop : FlutterServiceCallHandler
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.mm b/ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.mm
new file mode 100644
index 0000000..dee5638
--- /dev/null
+++ b/ios/Classes/Messaging/Generated/NavigationService/handlers/NavigationService_flutterCanPop.mm
@@ -0,0 +1,35 @@
+//
+//  NavigationService_canPop.m
+//  flutter_boost
+//
+//  Created by ZhongCheng Guo on 2019/6/5.
+//
+
+#import "NavigationService_flutterCanPop.h"
+#import "ServiceGateway.h"
+#import "FLBFlutterApplication.h"
+#import "FlutterBoostConfig.h"
+
+@implementation NavigationService_flutterCanPop
+
+- (void)onCall:(void (^)(BOOL))result
+        canPop:(BOOL)canPop
+{
+    //Add your handler code here!
+    if ([[FLBFlutterApplication sharedApplication].platform respondsToSelector:@selector(flutterCanPop:)]) {
+        [[FLBFlutterApplication sharedApplication].platform flutterCanPop:canPop];
+    }
+}
+
+#pragma mark - Do not edit these method.
+- (void)__flutter_p_handler_flutterCanPop:(NSDictionary *)args result:(void (^)(BOOL))result {
+    [self onCall:result canPop:[args[@"canPop"] boolValue]];
+}
++ (void)load{
+    [[ServiceGateway sharedInstance] registerHandler:[NavigationService_flutterCanPop new]];
+}
+- (NSString *)service
+{
+    return @"NavigationService";
+}
+@end
diff --git a/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.h b/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.h
index c7d3d63..6b8768f 100755
--- a/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.h
+++ b/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.h
@@ -34,4 +34,6 @@
  + (void)didDisappearPageContainer:(void (^)(NSNumber *))result pageName:(NSString *)pageName params:(NSDictionary *)params uniqueId:(NSString *)uniqueId;
  + (void)didInitPageContainer:(void (^)(NSNumber *))result pageName:(NSString *)pageName params:(NSDictionary *)params uniqueId:(NSString *)uniqueId;
  + (void)willDeallocPageContainer:(void (^)(NSNumber *))result pageName:(NSString *)pageName params:(NSDictionary *)params uniqueId:(NSString *)uniqueId;
- @end
\ No newline at end of file
+ // 获取flutter的canPop
+ + (void)canPopPageName:(NSString *)pageName params:(NSDictionary *)params uniqueId:(NSString *)uniqueId;
+ @end
diff --git a/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.mm b/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.mm
index b8d09c4..4978d96 100755
--- a/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.mm
+++ b/ios/Classes/Messaging/Generated/NavigationService/service/Service_NavigationService.mm
@@ -136,6 +136,14 @@
          }
      }];
  }
+
++ (void)canPopPageName:(NSString *)pageName params:(NSDictionary *)params uniqueId:(NSString *)uniqueId{
+    NSMutableDictionary *tmp = [NSMutableDictionary dictionary];
+    if(pageName) tmp[@"pageName"] = pageName;
+    if(params) tmp[@"params"] = params;
+    if(uniqueId) tmp[@"uniqueId"] = uniqueId;
+    [self.service invoke:@"canPop" args:tmp result:^(id tTesult) {
+    }];
+}
  
- 
- @end
\ No newline at end of file
+ @end
diff --git a/lib/AIOService/NavigationService/handlers/NavigationService_canPop.dart b/lib/AIOService/NavigationService/handlers/NavigationService_canPop.dart
new file mode 100644
index 0000000..dfba199
--- /dev/null
+++ b/lib/AIOService/NavigationService/handlers/NavigationService_canPop.dart
@@ -0,0 +1,39 @@
+import 'dart:async';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:xservice_kit/ServiceCallHandler.dart';
+import 'package:xservice_kit/ServiceGateway.dart';
+import 'package:flutter_boost/flutter_boost.dart';
+import 'package:flutter_boost/AIOService/NavigationService/service/NavigationService.dart';
+
+class NavigationService_canPop extends ServiceCallHandler {
+  static void regsiter() {
+    ServiceGateway.sharedInstance()
+        .registerHandler(new NavigationService_canPop());
+  }
+
+  @override
+  String name() {
+    return "canPop";
+  }
+
+  @override
+  String service() {
+    return "NavigationService";
+  }
+
+  @override
+  Future<bool> onMethodCall(MethodCall call) {
+    return onCall(call.arguments["pageName"], call.arguments["params"],
+        call.arguments["uniqueId"]);
+  }
+
+//==============================================Do not edit code above!
+
+  Future<bool> onCall(String pageName, Map params, String uniqueId) async {
+    NavigatorState navigator = FlutterBoost.containerManager.onstageContainer;
+    bool canPop = navigator.canPop();
+    NavigationService.flutterCanPop(canPop);
+    return true;
+  }
+}
\ No newline at end of file
diff --git a/lib/AIOService/NavigationService/service/NavigationService.dart b/lib/AIOService/NavigationService/service/NavigationService.dart
index 80a0ec9..b363b8e 100755
--- a/lib/AIOService/NavigationService/service/NavigationService.dart
+++ b/lib/AIOService/NavigationService/service/NavigationService.dart
@@ -93,4 +93,10 @@
        return BOOL(value);
      });
  }
+ /// 通知原生模块flutter是否可以pop
+ static void flutterCanPop(bool canPop) {
+   Map<String,dynamic> properties = new Map<String,dynamic>();
+   properties["canPop"]=canPop;
+   _service.methodChannel().invokeMethod('flutterCanPop',properties);
+ }
  }
\ No newline at end of file
diff --git a/lib/AIOService/NavigationService/service/NavigationServiceRegister.dart b/lib/AIOService/NavigationService/service/NavigationServiceRegister.dart
index 5533b74..1518d85 100755
--- a/lib/AIOService/NavigationService/service/NavigationServiceRegister.dart
+++ b/lib/AIOService/NavigationService/service/NavigationServiceRegister.dart
@@ -30,6 +30,7 @@
  import '../handlers/NavigationService_didDisappearPageContainer.dart';
  import '../handlers/NavigationService_didInitPageContainer.dart';
  import '../handlers/NavigationService_willDeallocPageContainer.dart';
+ import '../handlers/NavigationService_canPop.dart';
  
  class NavigationServiceRegister{
  
@@ -43,6 +44,7 @@
      NavigationService_didDisappearPageContainer.regsiter();
      NavigationService_didInitPageContainer.regsiter();
      NavigationService_willDeallocPageContainer.regsiter();
+     NavigationService_canPop.regsiter();
    }
  
  }
\ No newline at end of file
diff --git a/lib/container/container_manager.dart b/lib/container/container_manager.dart
index 26a8542..9c084eb 100755
--- a/lib/container/container_manager.dart
+++ b/lib/container/container_manager.dart
@@ -28,6 +28,7 @@ import 'package:flutter_boost/container/boost_container.dart';
 import 'package:flutter_boost/container/container_coordinator.dart';
 import 'package:flutter_boost/flutter_boost.dart';
 import 'package:flutter_boost/support/logger.dart';
+import 'package:flutter_boost/container/navigator_observer.dart';
 
 enum ContainerOperation { Push, Onstage, Pop, Remove }
 
@@ -100,6 +101,8 @@ class ContainerManagerState extends State<BoostContainerManager> {
     assert(widget.initNavigator != null);
     _onstage = BoostContainer.copy(widget.initNavigator);
 
+    FlutterBoost.containerManager.navigatorObserver.addBoostNavigatorObserver(NavigatorCanPopObserver());
+
     WidgetsBinding.instance.addPostFrameCallback((_) {
       setState(() {});
     });
-- 
2.26.2