PrismLibrary / Prism

Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Xamarin Forms, and Uno / Win UI Applications..
Other
6.3k stars 1.64k forks source link

[Enhancement] GetNavigationUriPath For Maui #3092

Open Axemasta opened 7 months ago

Axemasta commented 7 months ago

Summary

In Prism Forms we had the extension method GetNavigationUriPath, which when called would give you the current Uri of the INavigationService. In maui this extension no longer exists and reading the current Uri from a Viewmodel is incredibly difficult. We can observe the current Uri using the global navigation observer, however performing viewmodel based logic on the current Uri path is difficult.

API Changes

Add a new INavigationServiceExtension method named GetNavigationUriPath

Intended Use Case

Performing logic in a view model based on the page uri stack. For example we could have a Login page which can be accessed in multiple ways:

  1. Open app for the first time, see a welcome flow & agree to privacy policy, complete flow and show login page. For this scneario we want to show a back button to go back into the privacy flow
  2. Open app after agreeing to privacy, go directly to the login page. In this case we don't want to show a back button because we are at the bottom of our navigation stack.
NiranjanXamarin commented 7 months ago

Hello @Axemasta I am also facing this issue when I am migration Xamarin.Forms application to MAUI. Please let me know if you have any workaround to get NavigationStack in MAUI then please share. will be really appreciated. Thanks.

maonaoda commented 6 months ago

@NiranjanXamarin you can use IPageAccessor to get the NavigationStack

codes like this:

public XXXViewModel(IPageAccessor pageAccessor){
  var nvStack = pageAccessor.Page.Navigation.NavigationStack;
}
NiranjanXamarin commented 6 months ago

@maonaoda thanks alot. You saved my time. Appreciated