Espetacular!! Venho acompanhando vários cursos e vídeos de Flutter, e me decepciono com a complexidade, métodos estranhos, pouca explicação.. Aqui você foi perfeito e didático, muito obrigado pelo conteúdo!!
Olá Jeferson, para usar em uma StatelessWidget você pode utilizar um GetController e utilizar um observable para controlar a exibição da senha. Caso não use o GetX, você pode converter a widget para Stateful e utilizar uma variável boleana para controlar se exibe ou não a senha. Ao clicar no IconButton, você pode alterar esta propriedade com o setState (por exemplo).
opa, estou acompanhando o curso usando o flutter 3.0, no minuto 15:00, para atualizar os textos ao clicar em cadastrar deixei assim dentro do onInit - **titulo.value = visible == true ? 'Bem vindo!' : 'Crie sua Conta';** só funcionou usando o visible == true, teria outra solução para esse caso?
Para adicionar no o banco de dados como por exemplo a sua aplicação aí , que tem o time e dentro do time tem vários títulos , como ficaria pada eu adicionar na coleção ? Estou com essa dúvida para adicionar um time a partir de um textfield e dentro dele adicionar vários títulos
Olá Claucio, você pode fazer de duas formas: a) você pode utilizar uma subcollection em times, chamada titulos (você poderia adicionar usando ...firestore.collection('times/$timeId/titulos').add().... b) outra forma é adicionar uma outra coleção na raiz do projeto chamada 'titulos' e adicionar um campo chamado timeId para você conseguir filtrar os titulos de um time pelo timeId. A segunda tem vantagem caso você precise acessar uma lista de todos os títulos, independente do time...
É o operador !== (No meu editor eu utilizo a fonte Fira Code com suporte a ligatures, que convertem o === e o !== para os símbolos que você viu no vídeo).
@@drantunes legal obrigado ja tinha visto em outra video aula e fiquei super confuso agora aprendi rs valeuuu vc tem algum curso que segue uma linhagem de iniciante e vai escalonando?
Isso é um problema relacionado ao null safety das novas versões do Flutter. Você pode marcar a variável com ? para informar ao compilador que ela pode ser nula, ou inicializar ela antes ou mesmo marcar a variável como late e então fazer a inicialização tardia.
Isso. Infelizmente esta aula foi gravada sem o Null Safety. As novas aulas já estão todas com Null Safety. No caso do Firebase que retorna o null como um resultado é necessário explicitar ao Flutter que a variável pode ser nula.
estou com um erro no meu showSnack('Erro no login!', e.message); Type: dynamic The getter 'message' isn't defined for the type 'Object'. Try importing the library that defines 'message', correcting the name to the name of an existing getter, or defining a getter or field named 'message'.
@@drantunes me surgiu um novo error. 1 positional argument expected by 'Rx.new', but 0 found. Try adding the missing argument. nessa linha final Rx _firebaseUser = Rx();
Professor teria alguma maneira de forçar o disconnect de algum usuário? Vou no console do firebase e bloqueio por lá porém se o usuário já estiver logado ele continua tendo acesso.
Você pode criar uma Cloud Function usando Node.js, por exemplo, para usar o Admin SDK. Com o Admin SDK você consegue gerenciar a sessão de cada usuário por meio do UID. Para "forçar o sign out" remotamente, você poderia usar o método revokeRefreshTokens(UID). Acredito que isso resolveria o seu problema. firebase.google.com/docs/auth/admin/manage-sessions#revoke_refresh_tokens
Parabéns para a UTFPR pelo conteúdo muito bem feito e colocado, aluno da UFSM por aqui
Obrigado Glaucio!
que aula incrível mais uma forma de cadastro para o portfólio.
Obrigado por disponibilizar um conteúdo incrível e ainda gratuito
Espetacular!! Venho acompanhando vários cursos e vídeos de Flutter, e me decepciono com a complexidade, métodos estranhos, pouca explicação.. Aqui você foi perfeito e didático, muito obrigado pelo conteúdo!!
Muito obrigado Felipe. Com os feedbacks vamos melhorando. Grande abraço!!!!
SHOW !!!
muito bom o video, mas ficou devendo coisas, pq o final cortou
Boa noite amigo, me ajudou muito. Gostaria de saber como botar olho na senha para visualizar. Nesse StatelessWidget não consigo fazer isso :(
Olá Jeferson, para usar em uma StatelessWidget você pode utilizar um GetController e utilizar um observable para controlar a exibição da senha. Caso não use o GetX, você pode converter a widget para Stateful e utilizar uma variável boleana para controlar se exibe ou não a senha. Ao clicar no IconButton, você pode alterar esta propriedade com o setState (por exemplo).
opa, estou acompanhando o curso usando o flutter 3.0, no minuto 15:00, para atualizar os textos ao clicar em cadastrar deixei assim dentro do onInit - **titulo.value = visible == true ? 'Bem vindo!' : 'Crie sua Conta';** só funcionou usando o visible == true, teria outra solução para esse caso?
Pode fazer assim mesmo, sem problemas 😀
Excelente aula! Gostaria de saber se existe uma forma de impedir dois celulares de logar com o mesmo e-mail e senha, simultaneamente.
Você deve verificar isso no lado do servidor, criando uma regra para permitir 1 login ativo por vez 👍
Para adicionar no o banco de dados como por exemplo a sua aplicação aí , que tem o time e dentro do time tem vários títulos , como ficaria pada eu adicionar na coleção ? Estou com essa dúvida para adicionar um time a partir de um textfield e dentro dele adicionar vários títulos
Olá Claucio, você pode fazer de duas formas: a) você pode utilizar uma subcollection em times, chamada titulos (você poderia adicionar usando ...firestore.collection('times/$timeId/titulos').add().... b) outra forma é adicionar uma outra coleção na raiz do projeto chamada 'titulos' e adicionar um campo chamado timeId para você conseguir filtrar os titulos de um time pelo timeId. A segunda tem vantagem caso você precise acessar uma lista de todos os títulos, independente do time...
@@drantunes fiz isso e como posso para cada usuário logado ele ter seus próprios times ?
você tem curso na udemy se tiver deixa o link aqui por favor sobre flutter
Sem curso na Udemy
como coloca aquele sinal de diferente nao entendi onde ta aquele sinal no teclaro eu so conhece != ele parece dois igual com risco no meio
É o operador !== (No meu editor eu utilizo a fonte Fira Code com suporte a ligatures, que convertem o === e o !== para os símbolos que você viu no vídeo).
@@drantunes legal obrigado ja tinha visto em outra video aula e fiquei super confuso agora aprendi rs valeuuu vc tem algum curso que segue uma linhagem de iniciante e vai escalonando?
Como arruma esse erro ? The argument type 'Stream' can't be assigned to the parameter type 'Stream'.
minuto 28 da aula
tem hora que esse null safe só atrapalha
dando uma pesquisada achei a solução.
segue o codigo abaixo:
```
class AuthService extends GetxController {
FirebaseAuth _auth = FirebaseAuth.instance;
Rxn _firebaseUser = Rxn();
var userIsAuthenticad = false.obs;
@override
void onInit() {
super.onInit();
_firebaseUser.bindStream(_auth.authStateChanges());
ever(_firebaseUser, (User? user) {
if(user != null){
userIsAuthenticad.value = true;
}else{
userIsAuthenticad.value = false;
}
});
}
}
```
Isso é um problema relacionado ao null safety das novas versões do Flutter. Você pode marcar a variável com ? para informar ao compilador que ela pode ser nula, ou inicializar ela antes ou mesmo marcar a variável como late e então fazer a inicialização tardia.
Isso. Infelizmente esta aula foi gravada sem o Null Safety. As novas aulas já estão todas com Null Safety. No caso do Firebase que retorna o null como um resultado é necessário explicitar ao Flutter que a variável pode ser nula.
Tem continuacao? De repente acabou. Muito boa aula
Sim, só continuar a playlist Flutter na Prática!
Obrigado. Vou maratonar hehe
estou com um erro no meu
showSnack('Erro no login!', e.message);
Type: dynamic
The getter 'message' isn't defined for the type 'Object'.
Try importing the library that defines 'message', correcting the name to the name of an existing getter, or defining a getter or field named 'message'.
Passa só o e.toString() no método, pois está dando problema de conversão de tipo.
@@drantunes obrigado
@@drantunes me surgiu um novo error.
1 positional argument expected by 'Rx.new', but 0 found.
Try adding the missing argument.
nessa linha
final Rx _firebaseUser = Rx();
Professor teria alguma maneira de forçar o disconnect de algum usuário? Vou no console do firebase e bloqueio por lá porém se o usuário já estiver logado ele continua tendo acesso.
Você pode criar uma Cloud Function usando Node.js, por exemplo, para usar o Admin SDK. Com o Admin SDK você consegue gerenciar a sessão de cada usuário por meio do UID. Para "forçar o sign out" remotamente, você poderia usar o método revokeRefreshTokens(UID). Acredito que isso resolveria o seu problema.
firebase.google.com/docs/auth/admin/manage-sessions#revoke_refresh_tokens
@@drantunes mt obrigado vou testar aqui
Opa. Esse vídeo ainda é válido, já passou por modificações?
Sim, apenas a configuração que agora é automática, tem um vídeo atualizado na playlist!
estou compilando o projeto e da essa mensagem: Build failed due to use of deprecated Android v1 embedding. , como faço para resolver
Olá Alexandre, tem o passo a passo do upgrade aqui: github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects
@@drantunes obrigado por vc me responder, grato.
@@alejandrecardoso 👍👊👊
Gostaria de saber se vc tem algum curso dw futter web
@@alejandrecardoso Ainda não fiz conteúdo sobre Flutter Web...
Como deixou as regras do Firestone ?
Neste exemplo deixei sem regras. Neste caso, no mínimo, seria importante que a gravação fosse realizada somente pelo usuário logado.
O meu app ficar atualizando em cima na barra direto.
Como o aplicativo está usando uma API externa é preciso configurar as chaves de API no serviço api-futebol.com.br e alterar o times_repository.dart
os links estão indisponíveis
Vou corrigir Fernando, obrigado por avisar 👍
É impressão minha ou ele ta falando atrasado do vídeo? >.