Commit a02c9808 authored by 李增强's avatar 李增强

m

parent 322db076
...@@ -187,12 +187,17 @@ class BoostContainerState extends NavigatorState { ...@@ -187,12 +187,17 @@ class BoostContainerState extends NavigatorState {
@override @override
Future<bool> maybePop<T extends Object>([T result]) async { Future<bool> maybePop<T extends Object>([T result]) async {
if(routerHistory.isEmpty){
if (routerHistory.isEmpty) {
var c = FlutterBoost.containerManager.onstageSettings;
pop(result); pop(result);
if(c != null && c.name == '/'){
FlutterBoost.singleton.channel.sendEvent("go_moble_home",null);
return false;
}
return true; return true;
} }
final Route<T> route = routerHistory.last; final Route<T> route = routerHistory.last;
final RoutePopDisposition disposition = await route.willPop(); final RoutePopDisposition disposition = await route.willPop();
if (mounted) { if (mounted) {
...@@ -221,21 +226,23 @@ class BoostContainerState extends NavigatorState { ...@@ -221,21 +226,23 @@ class BoostContainerState extends NavigatorState {
} }
if (canPop()) { if (canPop()) {
super.pop<T>(result); super.pop<T>(result);
if (removedRoute != null) { if (removedRoute != null) {
GlobalRouteSettingsManager.instance.removeSettings(removedRoute); GlobalRouteSettingsManager.instance.removeSettings(removedRoute);
} }
if (Platform.isIOS && multipleRouteMode && !canPop()) { if (Platform.isIOS && multipleRouteMode && !canPop()) {
FlutterBoost.singleton.channel FlutterBoost.singleton.channel
.invokeMethod<dynamic>('enablePopGesture', null); .invokeMethod<dynamic>('enablePopGesture', null);
//开启native返回手势 //开启native返回手势
} }
} else { } else {
if (T is Map<String, dynamic>) { if (T is Map<String, dynamic>) {
FlutterBoost.singleton FlutterBoost.singleton
.closeInternal(uniqueId, result: result as Map<String, dynamic>); .closeInternal(uniqueId, result: result as Map<String, dynamic>);
} else { } else {
FlutterBoost.singleton.closeInternal(uniqueId,); FlutterBoost.singleton.closeInternal(
uniqueId,
);
} }
} }
return true; return true;
...@@ -250,7 +257,8 @@ class BoostContainerState extends NavigatorState { ...@@ -250,7 +257,8 @@ class BoostContainerState extends NavigatorState {
} }
if (multipleRouteMode && routerHistory.isNotEmpty) { if (multipleRouteMode && routerHistory.isNotEmpty) {
ContainerNavigatorObserver.bindContainerManager().willPush(route, routerHistory.last); ContainerNavigatorObserver.bindContainerManager()
.willPush(route, routerHistory.last);
} }
Future<T> future = super.push<T>(newRoute ?? route); Future<T> future = super.push<T>(newRoute ?? route);
...@@ -317,13 +325,15 @@ class ContainerNavigatorObserver extends NavigatorObserver { ...@@ -317,13 +325,15 @@ class ContainerNavigatorObserver extends NavigatorObserver {
void willPush(Route<dynamic> route, Route<dynamic> previousRoute) { void willPush(Route<dynamic> route, Route<dynamic> previousRoute) {
for (NavigatorObserver observer in boostObservers) { for (NavigatorObserver observer in boostObservers) {
if(observer is ContainerNavigatorObserver){ if (observer is ContainerNavigatorObserver) {
if (observer == this) continue; if (observer == this) continue;
ContainerNavigatorObserver containerNavigatorObserver = observer as ContainerNavigatorObserver; ContainerNavigatorObserver containerNavigatorObserver =
observer as ContainerNavigatorObserver;
containerNavigatorObserver.willPush(route, previousRoute); containerNavigatorObserver.willPush(route, previousRoute);
} }
} }
} }
@override @override
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) { void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
for (NavigatorObserver observer in boostObservers) { for (NavigatorObserver observer in boostObservers) {
...@@ -358,14 +368,14 @@ class ContainerNavigatorObserver extends NavigatorObserver { ...@@ -358,14 +368,14 @@ class ContainerNavigatorObserver extends NavigatorObserver {
} }
class GlobalRouteSettingsManager { class GlobalRouteSettingsManager {
GlobalRouteSettingsManager._(); GlobalRouteSettingsManager._();
static GlobalRouteSettingsManager instance = GlobalRouteSettingsManager._(); static GlobalRouteSettingsManager instance = GlobalRouteSettingsManager._();
final Map<Route,BoostRouteSettings> _routeSettingsMap = <Route,BoostRouteSettings>{}; final Map<Route, BoostRouteSettings> _routeSettingsMap =
<Route, BoostRouteSettings>{};
void addSettings(Route route,BoostRouteSettings settings) { void addSettings(Route route, BoostRouteSettings settings) {
_routeSettingsMap[route] = settings; _routeSettingsMap[route] = settings;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment