如何解决如何在 shell 中为我的页面创建验证流程?
我的申请一共有4页
- shell 中的 2 -
TabBar
- 外面的另外两个
首次安装应用程序时,必须将用户带到 Login
屏幕,因为他尚未通过身份验证。如果它已经通过身份验证(它有一个令牌),它会被带到 Notifications
屏幕。
我面临的问题是,即使这些检查有效(用户被带到正确的屏幕),当他转到 Login
页面时(因为这是他第一次安装应用程序,或者因为他的帐户已经关闭,他想开设另一个)我放在通知页面(在 OnAppearing ()
函数中)的支票在接下来显示 Login
页面的同时被触发。
我想知道是否有人会知道可能的解决方案。
AppShell.xaml
<TabBar>
<Tab Icon="notificacao_icone.png"
Title="Notificações">
<ShellContent ContentTemplate="{DataTemplate local:NotificacoesPage}" />
</Tab>
<Tab Icon="configuracoes_icone.png"
Title="Configurações">
<ShellContent ContentTemplate="{DataTemplate local:ConfiguracoesPage}" />
</Tab>
</TabBar>
AppShell.xaml.cs
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute(nameof(LoginPage),typeof(LoginPage));
Routing.RegisterRoute(nameof(TokenPage),typeof(TokenPage));
Routing.RegisterRoute(nameof(NotificacoesPage),typeof(NotificacoesPage));
Routing.RegisterRoute(nameof(NotificacaoDetalhePage),typeof(NotificacaoDetalhePage));
Routing.RegisterRoute(nameof(ConfiguracoesPage),typeof(ConfiguracoesPage));
MainThread.BeginInvokeOnMainThread(async () =>
{
await Task.Delay(500);
// Carrega configurações do banco de dados
var _config = BdRepository.tableExists("Configuracao");
try
{
if (!_config)
{
throw new Exception();
}
else
{
var _configuracao = ConfiguracaoRepository.GetAll();
if (string.IsNullOrEmpty(_configuracao.cad_token))
{
throw new Exception();
}
else
{
if (_configuracao.cad_token_validado_sn == "S")
{
// Redireciona para tela de notificacoes
await Shell.Current.GoToAsync($"{nameof(NotificacoesPage)}",false);
}
else
{
// Token nao validado,redireciona para tela de Token
await Shell.Current.GoToAsync($"{nameof(TokenPage)}",false);
}
}
}
}
catch (Exception)
{
// Redireciona para o cadastro
await Shell.Current.GoToAsync($"{nameof(LoginPage)}",false);
}
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。