打开页面而不后退或关闭

本文关键字: | 更新日期: 2023-09-27 18:02:45

我想在成功登录后将用户重定向到主页,所以我不希望他有后退按钮或能够再次进入登录页面。

我用这样的东西将用户重定向到登录页面:

if (isAuthenticated)
{
    MainPage = new General.Pages.MainPage();
}
else
{
    MainPage = new Account.Pages.Login();
}

我使用这段代码成功登录,但不起作用,并给出了一个例外:

await Navigation.PopAsync(false);
await Navigation.PushAsync(new General.Pages.MainPage());

给定的例外情况是:

System.InvalidOperationException:Android上全局不支持PopAsync,请使用NavigationPage。

不用说,上述NavigationPage也不起作用。

打开页面而不后退或关闭

我刚刚想好了,您可以在任何时候使用以下代码更改MainPage

App.Current.MainPage = new General.Pages.MainPage();

如果这篇文章能帮助其他用户的话,我就把它留给别人吧。

有两种方法可以实现这一点。

  1. 最初在App.cs的构造函数中将App.MainPage设置为主页。然后在主页的OnAppearing事件中,或者如果它有ViewModel,那么它的Initialization方法会检查用户是否经过身份验证。如果是,加载他的数据。如果不是,则将您的登录页面显示为模态。登录成功后,您可以弹出登录页面的模式并加载主页的数据。此外,如果需要,您可以在登录页面中处理后退按钮事件,以不允许用户退出模式页面。缺点-在登录模式出现之前,主页会显示一秒钟。

  2. 在App.cs的构造函数中,检查用户是否已通过身份验证。如果用户已通过身份验证,则通过将主页设置为MainPage来显示主页。否则,将MainPage设置为登录页面。登录成功后,再次设置MainPage
    缺点-在构造函数中检查isAuthenticated可能会使应用程序的初始加载看起来更慢。

您遇到的错误是因为您没有将任何页面推入导航堆栈。所以你的pop不起作用。

var firstPage = isAuthenticated ? new General.Pages.MainPage() : new Account.Pages.Login();
MainPage = new NavigationPage(firstPage);

如果您将使用

提到的NavigationPage

PopAsync正常工作。

相关文章:
  • 没有找到相关文章