Como fazer o app conseguir pegar os dados do banco de dados pela API já feita? #196
Replies: 1 comment
-
O problema no seu código está em várias áreas que podem causar falhas na lógica e na execução do processo de login. Vou detalhar os principais problemas e como eles foram resolvidos: 1. Tratamento de Resposta da API:O código não está verificando se a resposta da API está retornando corretamente ou se há erros na requisição. Além disso, não está garantindo que o corpo da resposta ( Adicione verificações de erro ( if (response.status.hasError) {
print('Error: ${response.statusText}');
return Future.error(response.statusText ?? 'Unknown error');
}
final users = response.body as List; 2. Lógica de Verificação do Usuário e Senha:A lógica dentro de Mude-a para usar métodos como User? user = users.firstWhereOrNull((u) => u.email == emailInput.text);
if (user != null) {
Password? password = passwords.firstWhereOrNull((p) => p.userId == user.id);
if (password != null && password.password == passwordInput.text) {
Get.to(HomeView());
} else {
printError("Senha Incorreta");
}
} else {
printError("Email não encontrado");
} 3. Uso Correto de
|
Beta Was this translation helpful? Give feedback.
-
na pasta user_repository o meu código está assim, pegando o resultado que a API me dá e transformando do json para o normal:
`class UserRepository extends GetConnect{
Future<List> getUserList()async{
}
}
class PasswordRepository extends GetConnect{
Future<List> getPasswordList()async{
}
}`
Creio eu que o erro esteja nas linhas de códigos a seguir, onde era pra se checar email por email vindo da API e se tiver o email no banco de dados comparar com a senha cadastrada:
`class LoginController extends GetxController {
UserRepository repository = UserRepository();
PasswordRepository rep = PasswordRepository();
Future<List> userList() async => await repository .getUserList();
Future<List> passwordList() async => await rep .getPasswordList();
TextEditingController emailInput = TextEditingController();
TextEditingController passwordInput = TextEditingController();
User newUser = User();
@OverRide
void onInit() {
super.onInit();
}
void checkPassword(int i, List passwords) {
if(passwordInput.text == passwords[i].password){
login();
} else {
printError("Senha Incorreta");
}
}
void login() {
Get.to(HomeView());
}
void printError(String error) {
print(error);
}
}`
Já pesquisei em vários lugares mas não consigo tirar minha dúvida, espero que alguém consiga me ajudar, obrigado desde já!!
OBS: Não programo em flutter este é só um projeto para complementar um trabalho da faculdade, estávamos programando pelo kodular.io onde a programação é em bloco mas decidimos mudar para o flutter.
Beta Was this translation helpful? Give feedback.
All reactions