Xamarin 表单 + 棱镜登录流程
Xamarin forms + prism login flow
我是 Xamarin Forms(以及 Prism)的新手 我正在尝试创建我的第一个 Xamarin Forms 应用程序并且需要一个登录流程。
我尝试检查用户是否登录 application.OnInitialized 方法(并根据结果显示登录或主页)。但问题是,如果我显示登录页面,然后在登录后显示主页,则用户可以使用硬件按钮导航到登录页面。
然后我尝试在主页的 OnNavigationTo 中检查它,但它也不起作用。我在 PRE 版本和稳定版本中检查了这个并且有不同的错误。在其中一个中,导航不起作用,在其他中 - 我收到一个错误,无法创建主页。
然后我尝试将导航服务注入 MainPage(不是视图模型),但我发现无法在那里注入导航服务。
然后我决定在 base.OnAppearing 之后从视图发送一条消息,并在视图模型中订阅该消息,并在需要时导航到登录作为回调。但是有一个非常奇怪的问题。如果我在 MainPage 上使用 ToolBarItems,那么在 windows phone 上它会在从登录页面导航回来后消失(但突然间,windows phone 上的登录页面有那个工具栏项),看起来 windows phone 上的 OnAppearing 方法在工具栏项加载之前触发。无论如何,这都不是解决方案。
然后我决定添加一个空白页面并在 base.onAppearing 之后将消息发送到视图模型中,在该视图模型中我会重定向到登录或主页。因此,它适用于一个小 "BUT"。如果我在登录页面或主页上按硬件后退按钮,我不会关闭应用程序,因为我导航到空白页面,这会将我重定向到登录页面或主页。
有没有正确的方法来使用棱镜实现登录流程?我真的很喜欢它,因为它是非常强大的框架..
提前致谢!
请记住,OnNavigatedTo 仅在使用最新预览版并调用 NavigationService.Navigate 时有效。这里有几种方法。首先,您可以导航到 MainPage,然后签入 OnNavigatedTo。如果未登录,请导航至登录页面。您也可以只检查应用程序启动。当您显示 LoginPage 时,您可以使用绝对 URI 来替换整个导航堆栈。本质上这是设置 MainPage = new MainPage().
我是 Xamarin Forms(以及 Prism)的新手 我正在尝试创建我的第一个 Xamarin Forms 应用程序并且需要一个登录流程。
我尝试检查用户是否登录 application.OnInitialized 方法(并根据结果显示登录或主页)。但问题是,如果我显示登录页面,然后在登录后显示主页,则用户可以使用硬件按钮导航到登录页面。
然后我尝试在主页的 OnNavigationTo 中检查它,但它也不起作用。我在 PRE 版本和稳定版本中检查了这个并且有不同的错误。在其中一个中,导航不起作用,在其他中 - 我收到一个错误,无法创建主页。
然后我尝试将导航服务注入 MainPage(不是视图模型),但我发现无法在那里注入导航服务。
然后我决定在 base.OnAppearing 之后从视图发送一条消息,并在视图模型中订阅该消息,并在需要时导航到登录作为回调。但是有一个非常奇怪的问题。如果我在 MainPage 上使用 ToolBarItems,那么在 windows phone 上它会在从登录页面导航回来后消失(但突然间,windows phone 上的登录页面有那个工具栏项),看起来 windows phone 上的 OnAppearing 方法在工具栏项加载之前触发。无论如何,这都不是解决方案。
然后我决定添加一个空白页面并在 base.onAppearing 之后将消息发送到视图模型中,在该视图模型中我会重定向到登录或主页。因此,它适用于一个小 "BUT"。如果我在登录页面或主页上按硬件后退按钮,我不会关闭应用程序,因为我导航到空白页面,这会将我重定向到登录页面或主页。
有没有正确的方法来使用棱镜实现登录流程?我真的很喜欢它,因为它是非常强大的框架.. 提前致谢!
请记住,OnNavigatedTo 仅在使用最新预览版并调用 NavigationService.Navigate 时有效。这里有几种方法。首先,您可以导航到 MainPage,然后签入 OnNavigatedTo。如果未登录,请导航至登录页面。您也可以只检查应用程序启动。当您显示 LoginPage 时,您可以使用绝对 URI 来替换整个导航堆栈。本质上这是设置 MainPage = new MainPage().