enterCallingPage method
void
enterCallingPage()
Implementation
void enterCallingPage() {
final attachedNavigator = navigator;
final routeDecision = _desktopUiReuseAdapter.resolveCallingRouteDecision(
hasNavigatorBinding: attachedNavigator != null,
isCallingPageOpen: !isClose || currentPage == CallPage.callingPage,
);
CallKitUILog.i(
_tag,
'NECallKitNavigatorObserver enterCallingPage decision=$routeDecision',
);
switch (routeDecision) {
case DesktopCallingRouteDecision.pushFlutterPage:
break;
case DesktopCallingRouteDecision.waitForNavigatorBinding:
CallKitUILog.i(
_tag,
'NECallKitNavigatorObserver enterCallingPage skipped: navigator is null',
);
return;
case DesktopCallingRouteDecision.skipDuplicatePage:
CallKitUILog.i(
_tag,
'NECallKitNavigatorObserver enterCallingPage skipped: calling page already open',
);
return;
}
currentPage = CallPage.callingPage;
final callingPageRoute = MaterialPageRoute<void>(builder: (widget) {
return NECallKitWidget(close: () {
CallKitUILog.i(
_tag,
'calling page close callback: isClose=$isClose, currentPage=$currentPage',
);
if (!isClose) {
isClose = true;
CallManager.instance.stopForegroundService();
unawaited(_runtimeAdapter.stopRing());
NECallKitNavigatorObserver.getInstance().exitCallingPage();
} else {
CallKitUILog.i(
_tag,
'calling page close callback skipped: page already marked closed',
);
}
});
});
_callingPageRoute = callingPageRoute;
attachedNavigator!.push(callingPageRoute);
isClose = false;
}