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