Login e Cadastro de Usuários com Firebase no Flutter | Curso de Flutter

Поделиться
HTML-код
  • Опубликовано: 18 янв 2025

Комментарии • 146

  • @marcussenise8964
    @marcussenise8964 3 года назад +13

    Tão bom achar tutoriais que não temos que além de entender o vídeo, entender tbm o inglês indiano haha
    Me ajudou mtão, já to inscrito e em breve verei todos os vídeos do curso :)

  • @osmonblack6672
    @osmonblack6672 3 года назад +5

    Teu canal muito top. Tava estudando react native, queria ver flutter acabei caindo de para-quedas, mais um inscrito

    • @drantunes
      @drantunes  3 года назад

      Seja bem vindo!!! 🚀

  • @geovannicadorin5742
    @geovannicadorin5742 3 года назад +6

    Estou aprendendo muito!!! Sua didática e explicações são simples e de fácil entendimento. Obrigado por compartilhar seu conhecimento

    • @drantunes
      @drantunes  3 года назад

      Muito obrigado Geovanni 😃 👍

  • @batistadavi
    @batistadavi 2 года назад +1

    Que aulas 10! 100! 1000!
    Tudo muito claro, consigo ver todo código na tela e os resultados. Sua forma de explicar é direta e assertiva! Parabéns!

    • @drantunes
      @drantunes  2 года назад

      Muito obrigado Davi! Sucesso para você!!!

  • @josesoaresSoares
    @josesoaresSoares 2 года назад +1

    Congratulations teacher! Pessoal estou vendo muito pouco likes! Vamos fazer joia ai... Essas aulas free sao incriveis. Merecem.

  • @KuroManX
    @KuroManX 3 года назад +2

    Parabéns, tu explica muito bem, entendi mais rápido do que quebrando a cabeça pela documentação oficial do flutterfire.

  • @GustavoSilva-us8xp
    @GustavoSilva-us8xp 3 года назад +2

    canal sensacional! Vou acompanhar sempre de agora em diante!

    • @drantunes
      @drantunes  3 года назад +1

      Show! Muito obrigado e seja bem vindo 😃

    • @GustavoSilva-us8xp
      @GustavoSilva-us8xp 3 года назад

      Obrigado, professor! Uma dúvida, fazer esse mesmo processo utilizando mobx é difícil ?

    • @drantunes
      @drantunes  3 года назад +1

      @@GustavoSilva-us8xp Bem tranquilo! Logo devo fazer um video com MobX, mas é bem simples ;)

    • @GustavoSilva-us8xp
      @GustavoSilva-us8xp 3 года назад

      @@drantunes Show! Vou tentar implementar aqui, estou usando mobx no projeto final do curso. Obrigado pela resposta!

  • @LucasDias-wx3hc
    @LucasDias-wx3hc Год назад +1

    Vídeo muito bom! Didática exemplar e de excelente qualidade. Obrigado por este Vídeo !!!!! Ganhou 1 inscrito!

  • @washinerdev4355
    @washinerdev4355 3 года назад +1

    caramba professor que top vou fazer a play list toda obrigadoooo muito bom super atualizado

    • @drantunes
      @drantunes  3 года назад

      Show Washiner!!! 💪

  • @piramidindestrutivel
    @piramidindestrutivel 3 года назад +1

    Muito bem explicado

  • @kaironferreira10
    @kaironferreira10 Год назад

    Que aula incrível

  • @BryanGamesBr
    @BryanGamesBr 3 года назад

    Esse cara é muito fera!!!!

  • @bestgrave7245
    @bestgrave7245 2 года назад

    Aula incrível! Gosteii💗💗🥇🥇

  • @sararodriguesdefreitas5542
    @sararodriguesdefreitas5542 Год назад

    Muito bom!!!

  • @fernandoguedes3994
    @fernandoguedes3994 Год назад

    Aula muito top, só tive dificuldade no início, pois tenho pouca noção ainda. Não esquece dos nub rsrsrs, veleu pela aula.

  • @quicksketch1617
    @quicksketch1617 2 года назад +3

    Quero fazer o curso inteiro, único que mostra o gitignore, acho muito importante, porque senão a gente acaba subindo informações que não pode.

  • @mateusmota4630
    @mateusmota4630 3 года назад +2

    Boa noite ,Prof. Diego Antunes. Fiquei com uma duvida relacionada seguranca da conexao do app com o firebase. Como o app conecta direto sem uso de uma api voce ve algum problema de seguranca? Eu entenid que a ponte de comunicacao é o json que fica na raiz do projeto. E se alguem decompilar o apk e pegar esse json e rodar em um projeto local com mesmo package?

    • @drantunes
      @drantunes  3 года назад +3

      Olá Mateus, não há problema **SE** o desenvolvedor configurar regras de segurança no Firebase para o Firestore, Storage, etc. firebase.google.com/docs/rules. Geralmente nos tutoriais apresenta-se apenas a configuração e uso do Firebase, mas para produção é necessário configurar as regras de segurança

  • @kaikednz7119
    @kaikednz7119 3 года назад

    bom video, bom video

  • @lucasgrandini1776
    @lucasgrandini1776 2 года назад +1

    Você tem algum curso online professor?

    • @drantunes
      @drantunes  2 года назад +3

      Ainda não, mas pretendo lançar esse ano. Se inscreva aqui no canal e ative as notificações para ficar por dentro quando lançar! Grande abraço

    • @lucasgrandini1776
      @lucasgrandini1776 2 года назад

      @@drantunes +1 inscrito com sucesso!

  • @CarlosEduardo_CE
    @CarlosEduardo_CE Год назад

    Muito obrigado por fazer essa aula

  • @Andys2eduarda
    @Andys2eduarda 6 месяцев назад

    Tem algum video integrando google e apple Sigin ?

    • @drantunes
      @drantunes  6 месяцев назад

      Infelizmente não

  • @igorsilva736
    @igorsilva736 3 года назад +1

    legal, só faltou separar os controllers

  • @johnny200
    @johnny200 3 года назад +1

    Boa tarde, professor. Primeiramente parabéns pelo conteúdo. Ganhou um inscrito. Gostaria de saber qual é essa extensão que você usa no momento da codificação em que vai mostrando os erros enquanto digita. Outra dúvida é se você tem algum conteúdo falando das extensões que você usa ou as melhores extensões para usar no vs code. Abraço.

    • @drantunes
      @drantunes  3 года назад +1

      Fala João, beleza? É a Error Lens. Não fiz um vídeo sobre isso ainda, mas é uma boa ideia, pois sempre me perguntam 👨‍💻

  • @F6GAMEPLAY
    @F6GAMEPLAY Год назад

    Opa, uma dúvida, se eu implementar autenticação com o google, eu preciso implementar autenticação com a apple para pulicar na apple store?

  • @charlessantos4896
    @charlessantos4896 2 года назад +1

    Olá, você já sabe que sou muito grato pelo seus videos, comentei muito aqui. Porem estou com uma pendencia. Fiz o AuthCheck identico ao seu, faço o registro não apresente erro algum, chama a tela HomePage, passa por todo o código e não troca para a HomePage, fica na RegisterPage. Sabe o que pode ser? Lembrando cria o usuário no Firebase e não apresente erro.

    • @drantunes
      @drantunes  2 года назад +1

      Teria que analisar o código... Quando você usa o hot reload, ele muda de página? Me parece que: a) o service de usuário não está chamando o notifyListeners ou b) algum erro na navegação.

    • @XstephanieXsilva
      @XstephanieXsilva 2 года назад

      Estou com o mesmo problema, quando uso o hot reload ele muda a página para a homepage mas sem o hot reload fica na página de login mostrando o CircularProgressIndicator infinitamente. Conseguiu corrigir esse problema?

    • @charlessantos4896
      @charlessantos4896 2 года назад

      @@drantunes o Hot reload funciona, ele chama a HomePage percorre todo o código da HomePage, não apresente erro mas não muda de fato para a HomePage. O notifyListeners esta identico ao seu. Unica diferença é que estou usando o Flutter 3.3.5.

    • @charlessantos4896
      @charlessantos4896 2 года назад

      @@XstephanieXsilva qual versão do seu Flutter?

    • @drantunes
      @drantunes  2 года назад +1

      @@charlessantos4896 sobe pro git o código

  • @josesoaresSoares
    @josesoaresSoares 2 года назад

    Teacher uma pergunta: no firebase (free) e possivel criar um projeto e configurar o storage para arquivos e o firestorage database? para acesso de apenas um app flutter. Penso no seguinte cenario: app com perfil de usuario e que o usuario possa enviar sua foto para personalizar a tela durante o uso.

    • @drantunes
      @drantunes  2 года назад

      Sim, sem problemas. Apenas precisa se atentar ao limite do plano gratuito: no storage era 5GB para arquivos.

  • @gabrielpinheiro3895
    @gabrielpinheiro3895 Год назад

    Quais as configurações de estilo que ele utiliza no vs code? o meu vs code vive dando problema ao codar flutter, principalmente na parte visual/plugins

    • @drantunes
      @drantunes  Год назад

      Quais problemas? Uso apenas as extensões do Flutter, Dart e algumas extensões de snippets (existem várias, é bom olhar o que faz sentido para você)

    • @gabrielpinheiro3895
      @gabrielpinheiro3895 Год назад

      @@drantunes
      Boa tarde, no meu fica aparecendo use "const" with the constructor to improve performance, em praticamente tudo, o problema é que as classes ficam sublinhadas em amarelo e me incomodam...

    • @gabrielpinheiro3895
      @gabrielpinheiro3895 Год назад

      e nem estou com muitas extensões é apenas
      Aura Theme
      Dart
      Dart data class generator
      Docker
      Flutter
      Flutter Widget Snippets
      Live server
      vscode-icons
      Alguém tem alguma suspeita ou já passou por isso?

    • @gabrielpinheiro3895
      @gabrielpinheiro3895 Год назад

      Não rpecisa mais, acabei de descobrir é só adicionar
      rules:
      prefer_const_constructors : false
      em
      analysis_options.yaml

    • @drantunes
      @drantunes  Год назад

      @@gabrielpinheiro3895 isso mesmo

  • @douglasiparts4516
    @douglasiparts4516 3 года назад +1

    Sensacional, no meu caso preciso colocar um campo para o usuario colocar o '"NOME" quando for cadastrar, pode me ajudar?

    • @drantunes
      @drantunes  3 года назад

      Você pode criar este campo de nome e, então, usar alguma abordagem para salvar o nome, por exemplo:
      a) você pode salvar o nome do usuário em uma collection 'users' no Firestore após a criação via Firebase Auth. O documento seria algo como users/UID onde UID é o id do usuário no Firebase Auth.
      Outra solução seria deixar o registro de login apenas com email e senha. Após o registro e o login, uma tela de boas vindas solicita dados adicionais como o nome. Então, você salva no Firestore também.

  • @rafaelsurfitapema1938
    @rafaelsurfitapema1938 Год назад

    Tem algum vídeo que faça recuperação de senhas?

  • @firmasroe3887
    @firmasroe3887 3 года назад +1

    Se tive uma nova tela stateless denomidada 'homepage2' que é chamada a partir de 'homepage' por meio de um drawer. Como faz pra saber se esta logado nessa nova tela?

    • @drantunes
      @drantunes  3 года назад

      Você pode recuperar a instância de AuthService usando o Provider.of(context) e então verificar se o usuario != null

    • @squallse4882
      @squallse4882 3 года назад +1

      @@drantunes
      final auth = Provider.of(context).isAuthenticated;
      if (!auth) {
      Navigator.of(context).pushReplacementNamed('/');
      }
      Onde colocar esse trecho? tentei no initState, DidChangesDependencies e metodo build, mas da um erro. O que está pegando é a reatividade, já que tem que se deslogar automaticamente quando clica no logout do drawer.

    • @drantunes
      @drantunes  3 года назад

      @@squallse4882 Você pode colocar no próprio método de logout ou em um controller de logout

  • @viniciomavel3194
    @viniciomavel3194 3 года назад +1

    como eu faço para aparecer somente o formulário de email e senha pra tela de login, e quando eu mudar pra cadastrar aparecer campos de formulário nome, sobrenome, data de nascimento, email, senha e confirmar senha? já tentei fazer uma condicional mas não vai, não sei de outra alternativa. se possível, poderia me ajudar?

    • @drantunes
      @drantunes  3 года назад +1

      Para o caso de dois formulários distintos, sugiro adicionar uma outra página, algo como CadastroPage e fazer um Navigate para ela.

    • @viniciomavel3194
      @viniciomavel3194 3 года назад

      Entendi, vou fazer

    • @douglasiparts4516
      @douglasiparts4516 3 года назад

      @@viniciomavel3194 Parceiro, caso encontre um método pode me auxiliar?

  • @silaspaesnomarketing
    @silaspaesnomarketing 2 года назад

    uma dúvida se eu quisesse usar essa mesma estrutura do video para de auto check porém, quando eu for cadastrar o usuario, eu gostaria que voltasse para tela de login, pra dai entrar com email e senha e ai sim depois de realizar o login desse jeito ficasse salvo os dados para entrar direto na proxima? coomo eu faria?

    • @drantunes
      @drantunes  2 года назад

      Você pode alterar o AuthService para não realizar o login do usuário. Quando você cria um usuário no Firebase, o login é automático no servidor. Quando fizer o login novamente, o próprio FIrebase faz um cache local da sessão do usuário, quando tentar entrar novamente já estará logado 👍

    • @silaspaesnomarketing
      @silaspaesnomarketing 2 года назад

      @@drantunes de acordo com o código que você usou no vídeo, qual parte seria? ou teria que incluir algo, pois tentei mexer no getuser e não rolou... estou quebrando a cabeça há dias... rs

    • @drantunes
      @drantunes  2 года назад

      @@silaspaesnomarketing você precisa deixar tudo manual pra fazer o que deseja. Remover o listen e remover o getUser do create… Pergunta: por que quer esse comportamento? Isso irá gerar mais fricção ao usuário …

    • @silaspaesnomarketing
      @silaspaesnomarketing 2 года назад

      ​@@drantunes veja.. no meu app tem uma pagina principal do perfil que mostra a foto, nome e status do usuarios e toda vez que ocorre o um cadastro e vai para essa pagina da erro, dizendo que não consegui criar um documento dentro da coleção e com isso não mostra as informações do perfil. estou usando esse código para pegar os dados.:
      StreamBuilder(
      stream: FirebaseFirestore.instance
      .collection("Colaboradores")
      .doc(auth.usuario?.uid)
      .snapshots(),

    • @drantunes
      @drantunes  2 года назад

      @@silaspaesnomarketing Pode corrigir isso criando a coleção antes de fazer o getUser de fato ou, para não dar impressão de travamento ou demora, pode exibir um placeholder nesta tela de perfil enquanto não há dados (tratando o erro)

  • @batistadavi
    @batistadavi 2 года назад

    Tu tem um curso na Udemy de aplicativos com Flutter?

    • @drantunes
      @drantunes  2 года назад

      Ainda não, mas fica de olho aqui no canal, pois em breve devo lançar algo muito bom 👨‍💻

  • @jojohgames6058
    @jojohgames6058 2 года назад

    professor, eu baixei o aplicativo de criptomoedas, mas ele está aparecendo muitos erros no codigo, eu não consegui rodar ele no emulador, oq eu devo fazer professor?

    • @drantunes
      @drantunes  2 года назад

      Flutter pub get primeiro

    • @drantunes
      @drantunes  2 года назад +1

      Depois será necessário configurar o firebase nele

    • @jojohgames6058
      @jojohgames6058 2 года назад

      @@drantunes Oi professor, vc fez uma video aula ensinando a fazer essa configuração do firebase? Poderia me mandar essa vídeo aula para eu assirtir?

    • @drantunes
      @drantunes  2 года назад

      @@jojohgames6058 ruclips.net/video/OjdGSoDntZQ/видео.html&ab_channel=Prof.DiegoAntunes

    • @jojohgames6058
      @jojohgames6058 2 года назад

      @@drantunes muito obrigado professor Diego.

  • @testepfirebase5614
    @testepfirebase5614 2 года назад

    existe alguma forma de dividir os usuarios em grupos no firebase? por exemplo: eu quero que um determinado grupo x só tenha acesso a determinado conteudo, equanto um outro grupo y não tenha acesso a esse mesmo conteudo, porem tenha acesso a outro conteudo, se isso for possivel, como pode ser feito?

    • @drantunes
      @drantunes  2 года назад

      Você deve implementar essa lógica, pois é uma regra de negócio específica. Você pode criar os grupos com um determinado ID e criar regras de segurança para bloquear o acesso a algumas collections do Firestore (por exemplo).

  • @PedroDomingues
    @PedroDomingues 2 года назад

    E como eu faria para desktops? Utilizo web?

    • @drantunes
      @drantunes  2 года назад +1

      Precisa checar na documentação se já há suporte oficial para o SDK para Desktop, acredito que ainda não tem.

    • @PedroDomingues
      @PedroDomingues 2 года назад

      @@drantunes eu dei uma olhada na documentação e realmente não tem, o que tem são "gambiarras" que o pessoal desenvolveu.

  • @yagowalter806
    @yagowalter806 Год назад

    Professor, como seria por exemplo ali no authCheck, para a primeira pagina ser uma página de bem vindo, com dois botões, Login e Registrar. Qnd o usuário clicar em login, ele vai para uma página de login e caso registrar, irá para uma página de registro. Tentei aqui porém não consegui. Tentei por exemplo mudando o child que está no main para esta pagina, ou então lá no authcheck, para no if ele retornar a página e tbm não deu certo.

    • @drantunes
      @drantunes  Год назад

      O modelo que quer fazer é diferente do exemplo que dei. Cria páginas diferentes mesmo e em cada botão de cada uma dessas páginas chama o método de login ou registrar do AuthService. Retornando sucesso, você pode redirecionar para outra página manualmente usando o Navigator.of(context).pushAndReplacement...

  • @stitchesanna2278
    @stitchesanna2278 Год назад

    Olá professor tudo bem? Primeiramente dizer que gostei muito da explicação e do conteúdo fácil de fazer e perceber... Parabéns 👌👌👏👏... Segundo queria pedir ajuda pois pra mim deu o seguinte erro " Error: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()", tentei as soluções daqui do RUclips e do stack overflow mas infelizmente não funcionaram para mim. Pode me ajudar por favor?

    • @drantunes
      @drantunes  Год назад +1

      Você precisa inicializar o projeto firebase e, então, chamar o initializeApp com as opções default. Veja esse video: Instalação do Firebase no Flutter em 2022 (FlutterFire e Realtime Database)
      ruclips.net/video/OjdGSoDntZQ/видео.html

    • @stitchesanna2278
      @stitchesanna2278 Год назад

      @@drantunes muito obrigada... Colocarei em prática a solução e darei o feedback 🙏🏾.

    • @stitchesanna2278
      @stitchesanna2278 Год назад

      Prof. ​@@drantunes implementei o que explicou na aula mas infelizmente não tive sucesso continuo com a mesma dificuldade... Vou continuar a tentar resolver... Muito obrigada pela ajuda e atenção... Ganhou +1 seguidora🙏🏾

  • @flutterflownapratica8499
    @flutterflownapratica8499 2 года назад

    Tem link curso?

    • @drantunes
      @drantunes  2 года назад +1

      Este video está em uma playlist do curso aberto no RUclips 👍

    • @flutterflownapratica8499
      @flutterflownapratica8499 2 года назад

      @@drantunes na verdade gostaria de um suporte , tenho usado o flutterflow , e gostaria de criar funções usando a livraria pubdev, por isso perguntei se vc tem algum curso .

    • @flutterflownapratica8499
      @flutterflownapratica8499 2 года назад

      @@drantunes eu pagaria pelas aulas especificas

    • @drantunes
      @drantunes  2 года назад +1

      @@flutterflownapratica8499 Hoje não tenho turma aberta. Me envie um email para drantunes.services@gmail.com para ver se consigo te ajudar 👍

    • @flutterflownapratica8499
      @flutterflownapratica8499 2 года назад

      @@drantunes agradeço

  • @igor10ms
    @igor10ms 3 года назад

    sabe me informar se funciona pro FlutterWeb também?

    • @drantunes
      @drantunes  3 года назад

      Funciona sim, só precisa fazer um setup adicional para as dependências, conforme site do FlutterFire (firebase.flutter.dev/docs/installation/web)

  • @nooblogado5251
    @nooblogado5251 3 года назад

    Aquele Muttley no cantinho kkkkkkk

  • @rgomes6478
    @rgomes6478 2 года назад

    Ola e para adicionar um username para o usuario

    • @drantunes
      @drantunes  2 года назад

      Você pode adicionar detalhes do usuário em uma collection no Firestore, inclusive outros dados que julgar necessário. O importante é ter em mãos o UID do usuário 👍

    • @rgomes6478
      @rgomes6478 2 года назад

      @@drantunes mais tem que ser manualmente? Não te como o usuário quando for cadastrar criar seu nome de usuário e o Firebase ver no banco se já existe esse nome?

    • @drantunes
      @drantunes  2 года назад

      @@rgomes6478 Isso mesmo que fará, apos o sign in você pode pedir dados adicionais do usuário e então salvar numa collection os dados que vc quer... Pense que podem ter dados como endereço, telefone, ou outras preferências (não é igual pra todo app)

    • @rgomes6478
      @rgomes6478 2 года назад

      @@drantunes Professor estou usando o Flutter Flow, tem como fazer isso nele tbm?

    • @drantunes
      @drantunes  2 года назад +1

      @@rgomes6478 infelizmente não utilizo o FlutterFlow para te responder isso :/

  • @yagowalter806
    @yagowalter806 Год назад

    Oi, estou tendo problema no meu App. Ele não desloga quando crio o botão, não acontece nada ao clicar nele. E também, quando implemento o progressindicator ele fica rodando infinito. Ficarei muito grato se conseguir me ajudar !

    • @drantunes
      @drantunes  Год назад

      É preciso analisar o debug console e ver se aparece algum erro…

    • @yagowalter806
      @yagowalter806 Год назад

      @@drantunes Ola obg pela resposta! Tem muitos problemas acontecendo , o primeiro é quando inicio o app pelo debug, a tela congela e nenhuma função funciona ou seja é necessário fechar o dar stop e abrir pelo app baixado. Depois, o snackbar não aparece como se não detectasse que ja tem um email cadastrado, por exemplo. Também o botão de sair não funciona. Mas quando crio uma conta por exemplo, ela aparece no firebase. O erro que da inicialmente no debug console na vdd não é um erro , aparece isso :"D/CompatibilityChangeReporter(23043): Compat change id reported: 3400644; UID 10186; state: DISABLED " Sendo necessário eu dar restart, eai abre normal. Porém da forma que te falei, com nada funcionando só após abrindo o app baixado. Se tiver alguma dica para que eu possa resolver esses erros ficaria muito grato! de extrema ajuda para meu Tcc, que é um app flutter.

    • @yagowalter806
      @yagowalter806 Год назад

      Professor. Resolvi o erro, por incrível que pareça era problema apenas em um () que estava faltando... É aquela coisa, trabalhar cansado da nisso, acaba fazendo errado. De qlqer forma obrigado pela aula

  • @Diogo-ef4gg
    @Diogo-ef4gg 3 года назад

    Professor, estou com o problema de que independente da conta que uso para logar, ou mesmo se acabo de cadastrar a conta, todo o banco de dados fica disponível para o usuário como se ele tivesse registrado tais itens. Como faço para sincronizar o banco com a conta do usuário?

    • @drantunes
      @drantunes  3 года назад

      Olá Diogo, esta é uma questão comum. O que você pode fazer é o seguinte: 1) Ao registrar um novo usuário e o login, você deve salvar seus dados em um service ou algo similar; 2) , todo novo cadastro que fizer em outras collections que são "protegidas" você deve inserir o UID do usuário no documento; 3) para "filtrar" você deve usar uma cláusula where para o usuário logado, algo como ...collection('produtos').where(''user_uid', isEqual: user.uid).get(). Desta forma você garante que o usuário só acesse os seus dados... Além disso, antes de ir para produção, você deve configurar as regras de segurança no Firestore para proteger o banco de dados contra ataques externos

  • @larissavieira1786
    @larissavieira1786 Год назад

    Professor, pode me auxiliar?
    acompanhei seu vídeo fiz tudo corretamente, mas quando faço o teste ele não mostra nenhuma das opções como: e-mail não encontrado ou senha incorreta... e caso eu coloco um ";" entre e-mail não encontrado ou senha incorreta... ele já utiliza a segunda opção independente se o email esta cadastrado ou não ele diz que a senha esta incorreta, isso é tanto para a tela de login quanto de cadastro.
    dessa forma ele não funciona:
    login(String email, String senha) async {
    try {
    await _auth.signInWithEmailAndPassword(email: email, password: senha);
    _getUser();
    } on FirebaseAuthException catch (e) {
    if (e.code == 'user-not-found') {
    throw AuthException('E-mail não encontrado. Cadastre-se.');
    } else if (e.code == 'wrong-password') {
    throw AuthException('Senha incorreta. Tente novamente.');
    }
    }
    }
    dessa forma com a virgula ele já pula para o segundo argumento "senha incorreta..."
    login(String email, String senha) async {
    try {
    await _auth.signInWithEmailAndPassword(email: email, password: senha);
    _getUser();
    } on FirebaseAuthException catch (e) {
    if (e.code == 'user-not-found') {
    throw AuthException('E-mail não encontrado. Cadastre-se.');
    } else if (e.code == 'wrong-password') ; {
    throw AuthException('Senha incorreta. Tente novamente.');
    }
    }
    }
    ponto e virgula entre else if (e.code == 'wrong-password') ; {
    throw AuthException('Senha incorreta. Tente novamente.');
    Pode me ajudar?

    • @drantunes
      @drantunes  Год назад

      Está inserindo um erro ao inserir esse ; pois ele pula a lógica do if-else. Perguntas: você habilitou a autenticação por email e senha no console do Firebase? Se sim, você registrou o usuário com quantos dígitos na senha? Outra dúvida para poder ajudar: quando você tenta chamar a função login o que aparece no debug console?

    • @larissavieira1786
      @larissavieira1786 Год назад

      @@drantunes Fiz todos esses passos, quando eu digito e-mail e senha correto ele entra normalmente e quando tento testar com uma senha incorreta ele não mostra/faz nada e não aparece nada no console... somente isso (Performing hot restart...
      Waiting for connection from debug service on Chrome...
      Restarted application in 1.846ms.) mas é normal pois não apresenta nenhum erro...

  • @helvecioguimaraes
    @helvecioguimaraes 2 года назад

    Fala, pessoal e prof Diego, blz? Estava olhando aqui o código e fiquei com uma dúvida: onde está a lógica que manda o app abrir a página moedas_page após o login? Se entendi corretamente, o login chama o método de mesmo nome em AuthService, e lá há uma tentativa de login que, se bem sucedida, chama o _getUser(), que seta o usuário para currentuser e daí dá o notifylisteners. Mas por que a partir disso ele cai na moedas_page e não em outra qualquer? Obrigado.

    • @drantunes
      @drantunes  2 года назад +1

      Neste caso ao invés de fazer um push manual da rota após o login, nós usamos a reatividade do Firebase via Provider + Change Notifier. Repare que no MeuAplicativo a widget principal é a AuthCheck que é reativa as mudanças na autenticação. Logo, quando o status do usuário muda, nós mostramos a widget correspondente (neste caso, o login ou a home page (que contém a moedas_page) 👍

    • @helvecioguimaraes
      @helvecioguimaraes 2 года назад

      @@drantunes excelente, entendido, muito obrigado, prof.

  • @adrielcosta404
    @adrielcosta404 2 года назад

    professor, sabe me dizer o pq desse erro?
    PlatformException (PlatformException(channel-error, Unable to establish connection on channel., null, null))
    Da erro no meu firebase : await Firebase.initializeApp();

    • @drantunes
      @drantunes  2 года назад +1

      Execute novamente os passos de configuração do FlutterFire configure

    • @adrielcosta404
      @adrielcosta404 2 года назад

      @@drantunes obrigado pela atenção! deu certo.

  • @victorsenna464
    @victorsenna464 2 года назад

    Esse código funciona para Android?

  • @ZéPedro-x8n
    @ZéPedro-x8n Год назад

    Caso esteja com o erro: "The supplied auth credential is incorrect, malformed or has expired", desative a enumeração de e-mails, no console do Firebase.

  • @ryuzaki9149
    @ryuzaki9149 3 года назад

    Oi professor, eu estou usando a versão do sdk: '>=2.11.9 =2.12.0

    • @drantunes
      @drantunes  3 года назад

      Tem haver com a versão do Flutter e do Dart. Quando você fizer o upgrade é importante reinstalar os packages do zero (comando flutter clean e depois flutter pub get). Depois de tudo atualizado é importante verificar o que a IDE e o console irão apontar como erro (provavelmente é relacionado ao null safety). Se der o erro, cola a mensagem aqui ou replica se for um erro da IDE...

    • @drantunes
      @drantunes  3 года назад

      Como se trata de um validador, é possível que ao tipar o value o erro desapareça. Tenta usar (String value) {....

  • @2k621
    @2k621 2 года назад

    Professor pode me ajudar _CastError (Null check operator used on a null value) onPressed: () {
    Nessa linha --> if (formKey.currentState!.validate()) {
    if (isLogin) {
    login();
    } else {
    cadastrar();
    }
    }
    },

    • @drantunes
      @drantunes  2 года назад +1

      Não parece ter nada errado, o formKey foi iniciado corretamente? O que o método login faz?

    • @2k621
      @2k621 2 года назад

      ​@@drantunes Professor exatamente o que o senhor passou eu já ia apagar o comentário kkk o formKey não foi iniciado dentro do Form() mas não vou apagar caso alguem cometa o mesmo erro bobo q o meu, e professor muito obrigado por tudo!! O senhor tem me ajudado muito

  • @guto002
    @guto002 3 года назад +1

    Alguém me uma luz?
    await HiveConfig.start();
    await Firebase.inicializeApp();
    O Vs nao ta reconhecendo... ja atualizei tudo...

    • @drantunes
      @drantunes  3 года назад +2

      Opa, no método await Firebase.inicializeApp(); mude para initializeApp.
      Já o HiveConfig é uma classe que foi criada no projeto, não é do package Hive. Caso não esteja funcionando, dá uma olhada no código-fonte github.com/drantunes/cripto_moedas/blob/semana5/lib/configs/hive_config.dart

    • @guto002
      @guto002 3 года назад +1

      @@drantunes obrigado!

  • @undersgral2430
    @undersgral2430 Год назад

    Quando altero a lógica do AuthCheck para mostrar uma tela de introdução do aplicativo caso o usuário não esteja logado, a reatividade que manda de Login para Home para de funcionar, por quê? Nessa tela de introdução eu tenho dois botões: um que manda para um tela de login e outro que manda para a tela de Registro.

    • @drantunes
      @drantunes  Год назад

      No exemplo eu utilizo uma logica de if else para login ou home. Uma vez que você navega para outra tela, a widget anterior sofre dispose. Para manter um listener global precisa fazer de alguma outra forma