void NavigationPopCallback(MessageBus bus, NavigationPopInfo navigationPopInfo) { if (navigationPopInfo == null) { throw new ArgumentNullException(nameof(navigationPopInfo)); } if (_isBusy) { return; } _isBusy = true; Pop(navigationPopInfo); }
void NormalPop(NavigationPopInfo popInfo) { Device.BeginInvokeOnMainThread(async() => { try { await GetTopNavigation().PopAsync(popInfo.WithAnimtation); popInfo.OnCompletedTask.SetResult(true); } catch { popInfo.OnCompletedTask.SetResult(false); } finally { _isBusy = false; } }); }
void Pop(NavigationPopInfo popInfo) { switch (popInfo.Mode) { case NavigationMode.Normal: NormalPop(popInfo); break; case NavigationMode.Modal: ModalPop(popInfo); break; case NavigationMode.Popup: PopupPop(popInfo); break; case NavigationMode.AllPopup: AllPopupPop(popInfo); break; default: throw new NotImplementedException(); } }