Alura > Cursos de Mobile > Cursos de Flutter > Conteúdos de Flutter > Primeiras aulas do curso Flutter: integrações com NFC

Flutter: integrações com NFC

Flutter: integrações com NFC - Introdução

Meu nome é Ricarth Lima e serei o instrutor deste curso de Flutter. Desta vez, vamos abordar a leitura de NFC.

Audiodescrição: Ricarth Lima é uma pessoa de olhos castanhos e cabelo crespo castanho. Usa barba e óculos de armação retangular transparente. Está com uma camiseta preta. Ao fundo, parede com iluminação azulada e prateleiras de livros.

O que vamos desenvolver?

Para começar, iremos te mostrar o projeto em funcionamento, pois é muito interessante. Dessa vez, vamos utilizar um dispositivo físico, mas vamos projetar o aplicativo na tela. Quando pressionamos o botão "Entrar" no celular, a tela muda.

Tela de simulação de um smartphone exibindo uma aplicação de gestão de contas do Banco D'ouro com campos para e-mail e senha e um botão "Entrar". No topo, há uma imagem de uma mulher sorridente vestindo um casaco preto e uma blusa amarela manuseando um celular. A interface da aplicação tem um fundo amarelado com estrelas decorativas e a marca do Banco Douro em destaque.

Nosso objetivo é adicionar uma camada extra de segurança ao aplicativo do Banco d' Ouro, desenvolvido na formação de Dart.

Após a pessoa logar e acessar a tela de login, ela será direcionada para a tela de cadastro do cartão NFC do Banco d'Ouro. Para demonstrar como isso funciona, clicaremos no botão "Continuar". O sistema solicitará que aproximemos um cartão.

Para realizar o procedimento, basta ter um cartão com tecnologia de aproximação.

Pode ser um cartão de crédito, mas utilizaremos um cartão de transporte metropolitano. Ao encostar o cartão no celular, o app registra os dados. Quando pressionar o botão "Finalizar", o sistema retorna à tela inicial.

Se sairmos da aplicação e tentarmos entrar novamente, será necessário realizar o procedimento para iniciar uma leitura com o NFC. Inclusive, se aproximamos um cartão diferente, recebemos um aviso de que esse cartão não cadastrado. O sistema prossegue apenas quando o cartão correto é aproximado.

Para isso, utilizaremos a tecnologia NFC (Near Field Communication ou Comunicação por campo de proximidade).

Pré-requisitos

Antes de prosseguir, o que você precisa saber para fazer esse curso? É necessário ter concluído a Formação em Dart e a Formação Flutter. O foco deste curso será a comunicação com o NFC, portanto, não criaremos telas ou desenvolveremos a lógica de mudança de estado de telas. As telas já estarão prontas, e para compreender o fluxo do código, é importante ter passado pela formação em Dart, onde também trabalhamos com o Banco D'Ouro, e pela formação em Flutter.

Outro ponto importante é que o projeto será entregue com as telas e toda a parte visual pronta. Por isso, lembre-se de fazer o download do material no GitHub para acompanhar o curso. Com esses recados, podemos começar.

Flutter: integrações com NFC - Leitura de NFCs com Flutter

Interrupção do Projeto Atual e Novo Foco

Vamos interromper a execução do projeto atual para começarmos a criar um novo do zero, utilizando o que será baixado. Após parar a execução, vamos explorar a estrutura do projeto no VS Code para nos situarmos. Além das telas de login e home do projeto Banco d'Ouro, temos duas novas telas entregues pela equipe de desenvolvimento de interfaces. Nosso foco será no cadastro do cartão, sem criar telas ou lidar com a segurança do banco, que são responsabilidades de outras equipes. Nosso objetivo é trabalhar com NFC (Near Field Communication), uma tecnologia de comunicação de campo próximo, que funciona até 4 cm de distância.

Introdução ao NFC

O NFC é utilizado em transportes públicos e pagamentos por aproximação, como cartões de crédito e celulares. Este curso não ensina a clonar cartões de crédito, pois as informações lidas via NFC são públicas e não permitem clonagem. A segurança é garantida por chips e tokens que mudam a cada transação. Vamos detalhar as diferenças entre NFC e outras tecnologias de aproximação.

Estrutura do Código e Novas Telas

Compreendido o NFC, vamos ao código. Temos duas novas telas: uma para registrar o cartão e outra para verificar se o cartão registrado é o correto. Ambas estão cadastradas como rotas na main e localizadas na pasta "UI". Vamos começar pela tela de registro. Na pasta "widgets", há subtelas que utilizaremos para transições de estado. Na tela de registro, temos um enum privado com quatro estados: welcome, notValid, readCard e finished. Esses valores representam subtelas na tela de registro.

Lógica de Navegação e Configuração do NFC

Inicialmente, apresentamos a tela de welcome, que sugere registrar o cartão físico. Dependendo do dispositivo, bifurcamos a aplicação: se o dispositivo suporta NFC, vamos para a tela readCard; caso contrário, para a tela notValid. Na tela NFCRegisterScreen, há dois botões: next e back, associados aos métodos onBackButtonClicked e onNextButtonClicked. Precisamos ajustar o comportamento desses botões conforme a subtela ativa.

Testes e Ajustes no Emulador

Para testar, mudamos do dispositivo físico para o emulador, que não suporta NFC. No botão de voltar, se estivermos na tela welcome, retornamos à tela de login usando Navigator.pushReplacementNamed com routeName login. Após ajustes, ao clicar em continuar na tela welcome, verificamos se o dispositivo suporta NFC. Se não suportar, direcionamos para a tela notValid.

Configuração do Plugin NFC

Configuramos o plugin NFC no Flutter. No terminal, instalamos o plugin nfc_manager e configuramos o AndroidManifest.xml para permitir o uso de NFC. Adicionamos permissões e configuramos o uso de NFC, permitindo que dispositivos sem NFC ainda possam usar a aplicação. Após essas configurações, rodamos a aplicação novamente.

Verificação de Disponibilidade do NFC

Na tela welcome, ao clicar em continuar, verificamos a disponibilidade de NFC com o método verifyNFCAvailable. Se disponível, mudamos para a tela readCard; caso contrário, para notValid. No emulador, ao clicar em continuar, a tela notValid é exibida, pois o emulador não suporta NFC. Ajustamos o comportamento do botão de voltar para todas as subtelas retornarem à tela de login.

Leitura e Persistência de Dados NFC

Para testar a leitura de NFC, mudamos para um dispositivo físico. No dispositivo, ao clicar em continuar, a tela readCard é exibida, solicitando a aproximação do cartão. Criamos o método startReading para iniciar a leitura de NFC. Quando uma tag NFC é detectada, um callback é chamado, e imprimimos os dados da tag no console para visualização.

Gerenciamento de Dados Locais

Para persistir os dados lidos, utilizamos o SharedPreferences. Criamos um arquivo PrefsKeys para armazenar as chaves de preferência e um LocalDataManager para gerenciar a leitura e escrita de dados locais. Implementamos métodos para salvar e ler o identificador da tag NFC, garantindo que os dados sejam persistidos corretamente.

Implementação de Lógica de Primeira Vez

Se sairmos e tentarmos entrar novamente, não chegamos à tela de confirmação do cartão cadastrado. Precisamos implementar uma lógica para verificar se um cartão já foi registrado ou se o dispositivo não é capaz de registrar cartões. Vamos criar uma nova chave no SharedPreferences para verificar se é a primeira vez que a pessoa está passando por aquela tela.

Finalização e Testes Finais

Após implementar essas funcionalidades, nosso sistema de autenticação com cartão físico estará pronto. Podemos usar esse conhecimento para diversas aplicações de NFC, como autenticação, estudos, escape rooms, entre outros. Explore as possibilidades criativas dessa tecnologia. Não deixe de conferir as atividades em texto para informações complementares. Nos vemos no mundo do Flutter!

Sobre o curso Flutter: integrações com NFC

O curso Flutter: integrações com NFC possui 95 minutos de vídeos, em um total de 10 atividades. Gostou? Conheça nossos outros cursos de Flutter em Mobile, ou leia nossos artigos de Mobile.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Flutter acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas