Olá! Que curso é esse? você pode mandar o link? Não encontrei na plataforma, se não aparece pra todos deve ta descontinuado por conter bugs, nesses casos é melhor nem fazer.
Enfim, pelo o que você disse irei dar umas dicas:
O erro que você está enfrentando é relacionado à ambiguidade entre duas classes chamadas "Usuario," uma no namespace "App1.Models" e outra no namespace "App1.Views." Isso ocorre porque o compilador não consegue determinar qual delas você está tentando usar. Para resolver essa ambiguidade, você pode seguir uma das soluções mencionadas anteriormente:
Solução 1: Utilizar o nome completo da classe, incluindo o namespace, sempre que você for usá-la. Por exemplo:
MessagingCenter.Send<App1.Models.Usuario>(resultadoLogin.usuario, "SucessoLogin");
Solução 2: Renomear uma das classes "Usuario" para evitar a ambiguidade. Por exemplo, você poderia renomear "App1.Views.Usuario" para "App1.Views.UsuarioView."
Você mencionou que após ajustar o código de acordo com a primeira sugestão, o aplicativo agora encontra o usuário, efetua o login, mas encontra um erro durante a listagem dos carros e direciona para "exceptionservicescommon.cs" com a mensagem de exceção "System.ArgumentNullException: 'Value cannot be null. Parameter name: sender'."
Esse erro ocorre porque você está tentando enviar uma mensagem pelo MessagingCenter com um parâmetro "sender" nulo. O "sender" não deve ser nulo. Para resolver isso, você pode verificar se o objeto "resultadoLogin.usuario" não é nulo antes de enviar a mensagem, como no código a seguir:
if (resultadoLogin.usuario != null)
{
MessagingCenter.Send<App1.Models.Usuario>(resultadoLogin.usuario, "SucessoLogin");
}
else
{
// Lide com a situação em que resultadoLogin.usuario é nulo
}
Quanto à linha onde o "usuario" está em cinza no arquivo "MasterDetailView.xaml.cs," isso pode indicar que a variável "usuario" não está sendo utilizada nesse contexto. Se isso não afeta a funcionalidade desejada do código, você pode remover a declaração da variável "usuario" no construtor, já que não está sendo usada ali. Isso não deve causar problemas adicionais.
Para corrigir a situação de "resultadoLogin.usuario" ser nulo, você deve verificar o processo de deserialização de JSON que você está usando. Certifique-se de que o objeto "resultadoLogin" está sendo populado corretamente com os dados do usuário durante a deserialização.
O código que você compartilhou para a deserialização parece correto:
var conteudoResultado = await resultado.Content.ReadAsStringAsync();
var resultadoLogin = JsonConvert.DeserializeObject<ResultadoLogin>(conteudoResultado);
No entanto, é importante verificar se o JSON retornado pela chamada da API está formatado corretamente e contém os dados esperados do usuário. Qualquer problema na estrutura do JSON ou na classe "ResultadoLogin" pode causar o objeto "resultadoLogin.usuario" ser nulo.
Resumindo, você pode seguir os seguintes passos para resolver os problemas mencionados:
- Certifique-se de que a deserialização do JSON está ocorrendo corretamente e que o objeto "resultadoLogin" está sendo populado com os dados do usuário.
- Verifique se o objeto "resultadoLogin.usuario" não é nulo antes de enviar a mensagem pelo MessagingCenter.
- Se a variável "usuario" no construtor de "MasterDetailView.xaml.cs" não estiver sendo utilizada, você pode removê-la sem afetar a funcionalidade.