首页 文章

Xamarin形成prism登录流程

提问于
浏览
4

我是Xamarin Forms的新手(也是Prism中的新手)我正在尝试创建我的第一个xamarin表单应用程序并需要一个登录流程 .

我试图检查用户是否登录了application.OnInitialized方法(并根据结果显示Login或Main页面) . 但问题是,如果我显示登录页面,然后登录后我显示主页面,那么用户可以使用硬件按钮导航到登录页面..

然后我试图在主页面的OnNavigationTo中检查这个,但它也不起作用 . 我在PRE版本和稳定版本中检查了这个并且有不同的错误 . 在其中一个导航只是没有工作,在另一个 - 我得到一个错误,主页无法创建 .

然后我尝试将导航服务注入MainPage(不是视图模型),但我发现导航服务无法注入那里 .

然后我决定在base之后从view发送消息.OnAppearing并在视图模型中订阅该消息,并根据需要进行导航登录作为回调 . 但是有一个非常奇怪的问题 . 如果我在MainPage上使用ToolBarItems,那么在Windows手机上它从登录页面导航后就消失了(但突然,Windows手机上的登录页面有工具栏项),看起来像Windows手机上的OnAppearing方法在工具栏项目加载之前触发 . 无论如何,这不是一个解决方案 .

然后我决定添加一个空白页面并在base.onAppearing进入视图模型后发送消息,在该视图模型中我重定向到Login或主页面 . 所以,它适用于一个小“BUT” . 如果我按下登录页面或主页面上的硬件返回按钮,我不会关闭应用程序,因为我导航到空白页面,重定向到登录页面或主页面 .

有没有一种正确的方法来使用棱镜实现登录流程?我真的很喜欢它,因为它是非常强大的框架..提前感谢!

1 回答

  • 3

    请记住,OnNavigatedTo仅在使用最新预览版本并调用NavigationService.Navigate时才有效 . 这里有几种方法 . 首先,您可以导航到MainPage,然后检查OnNavigatedTo . 如果未登录,请导航到LoginPage . 你也可以检查App启动 . 显示LoginPage时,可以使用绝对URI替换整个导航堆栈 . 基本上这是设置MainPage = new MainPage() .

相关问题