public async Task RemovePageAsync(PopupPage page, bool animate = true) { if (page == null) { throw new NullReferenceException("Page can not be null"); } if (page.IsBeingDismissed) { return; } animate = CanBeAnimated(animate); page.IsBeingDismissed = true; if (animate) { await page.DisappearingAnimation(); } await RemoveAsync(page); await Task.Delay(50); if (animate) { page.DisposingAnimation(); } page.IsBeingDismissed = false; await Task.Delay(5); }
public Task RemovePageAsync(PopupPage page, bool animate = true) { lock (_locker) { if (page == null) { throw new NullReferenceException("Page can not be null"); } if (!_popupStack.Contains(page)) { throw new InvalidOperationException("The page has not been pushed yet or has been removed already"); } if (page.DisappearingTransactionTask != null) { return(page.DisappearingTransactionTask); } var task = InvokeThreadSafe(async() => { if (page.AppearingTransactionTask != null) { await page.AppearingTransactionTask; } lock (_locker) { if (!_popupStack.Contains(page)) { return; } } animate = CanBeAnimated(animate); if (animate) { await page.DisappearingAnimation(); } await RemoveAsync(page); if (animate) { page.DisposingAnimation(); } lock (_locker) { _popupStack.Remove(page); page.DisappearingTransactionTask = null; } }); page.DisappearingTransactionTask = task; return(task); } }
public async static Task RemovePageAsync(PopupPage page, bool animate = true) { if (page == null) { throw new NullReferenceException("Page can not be null"); } if (!page.IsAnimate) { if (animate) { await page.DisappearingAnimation(); } RemovePopup(page); await Task.Delay(50); page.DisposingAnimation(); } }
public async Task RemovePageAsync(PopupPage page, bool animate = true) { lock (_popupStack) { if (!_popupStack.Contains(page)) { return; } _popupStack.Remove(page); page.IsBeingDismissed = true; } while (page.IsBeingAppear) { await Task.Delay(50); } animate = CanBeAnimated(animate); try { if (animate) { await page.DisappearingAnimation(); } await RemoveAsync(page); if (animate) { page.DisposingAnimation(); } } finally { page.IsBeingDismissed = false; } }
public Task RemovePageAsync(PopupPage page, bool animate = true) { lock (_locker) { if (page == null) { throw new RGPageInvalidException("Page cannot be null"); } if (!_popupStack.Contains(page)) { throw new RGPopupStackInvalidException("The page has not been pushed yet or has been removed already"); } if (page.DisappearingTransactionTask != null) { return(page.DisappearingTransactionTask); } var task = InvokeThreadSafe(async() => { if (page.AppearingTransactionTask != null) { await page.AppearingTransactionTask; } lock (_locker) { if (!_popupStack.Contains(page)) { return; } } Popping?.Invoke(this, new PopupNavigationEventArgs(page, animate)); animate = CanBeAnimated(animate); if (animate) { await page.DisappearingAnimation(); } await RemoveAsync(page); if (animate) { page.DisposingAnimation(); } lock (_locker) { _popupStack.Remove(page); page.DisappearingTransactionTask = null; Popped?.Invoke(this, new PopupNavigationEventArgs(page, animate)); } }); page.DisappearingTransactionTask = task; return(task); } }