From 75ef645412fc3ccb610223ecf43bede01c1596ec Mon Sep 17 00:00:00 2001 From: niimima Date: Mon, 29 Jul 2024 16:58:12 +0900 Subject: [PATCH] Refactor insert RemovePageSegment --- .../Navigation/PageNavigationService.cs | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/Maui/Prism.Maui/Navigation/PageNavigationService.cs b/src/Maui/Prism.Maui/Navigation/PageNavigationService.cs index a90a009e5..17678146d 100644 --- a/src/Maui/Prism.Maui/Navigation/PageNavigationService.cs +++ b/src/Maui/Prism.Maui/Navigation/PageNavigationService.cs @@ -355,6 +355,7 @@ public virtual async Task NavigateFromAsync(string viewName, var foundPage = navigationPages.FirstOrDefault(page => ViewModelLocator.GetNavigationName(page) == viewName); if (foundPage is null) { + // Find a page from parents. var page = currentPage; while (page != null) { @@ -366,14 +367,19 @@ public virtual async Task NavigateFromAsync(string viewName, } else { + // Insert RemovePageSegment. var removePageCount = navigationPages.IndexOf(foundPage); - // Insert RemovePageSegment. - var routeString = route.ToString(); + var tempQueue = new Queue(); for (int i = 0; i < removePageCount; i++) { - AddToFront(navigationSegments, RemovePageSegment); + tempQueue.Enqueue(RemovePageSegment); + } + while(navigationSegments.Count > 0) + { + tempQueue.Enqueue(navigationSegments.Dequeue()); } + navigationSegments = tempQueue; } await ProcessNavigation(currentPage, navigationSegments, parameters, null, null); @@ -392,23 +398,6 @@ public virtual async Task NavigateFromAsync(string viewName, } } - private static void AddToFront(Queue queue, T element) - { - var tempQueue = new Queue(); - - while (queue.Count > 0) - { - tempQueue.Enqueue(queue.Dequeue()); - } - - queue.Enqueue(element); - - while (tempQueue.Count > 0) - { - queue.Enqueue(tempQueue.Dequeue()); - } - } - /// /// Selects a Tab of the TabbedPage parent. ///