private void ClearNavigationStackIfNeed(IDataContext context, Page page, Task task) { var navigation = _rootPage.Navigation; if (navigation == null || context == null || !context.GetData(NavigationConstants.ClearBackStack)) return; task.TryExecuteSynchronously(t => { var pages = navigation.NavigationStack.ToList(); for (int i = 0; i < pages.Count; i++) { var toRemove = pages[i]; if (toRemove != page) navigation.RemovePage(toRemove); } }); context.AddOrUpdate(NavigationProvider.ClearNavigationCache, true); }