Aplicação Flutter com integração Firebase Firestore para cadastro, listagem, edição, exclusão e controle de presença de estudantes. Interface intuitiva, suporte a mouse (cursor pointer) e feedback visual. Ideal para estudos de CRUD em Flutter com backend em nuvem usando Firebase.
Este arquivo é o ponto de entrada da aplicação Flutter integrada ao Firebase, responsável por inicializar os serviços essenciais e definir o widget raiz da interface.
- Visão Geral
- Importações
- Função Principal (
main) - Classe Principal (
MyApp) - Execução
- Dependências
O arquivo main.dart inicializa o Flutter e o Firebase, e define o widget principal da aplicação, que utiliza o padrão Material Design e tem como tela inicial o widget Home.
flutter/material.dart: Biblioteca principal de widgets do Flutter.flutter_firebase_crud/pages/home.dart: Página inicial personalizada da aplicação.firebase_core/firebase_core.dart: Inicialização do Firebase.firebase_options.dart: Configurações específicas do Firebase para o projeto.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(const MyApp());
}- WidgetsFlutterBinding.ensureInitialized(): Garante que o binding do Flutter esteja pronto antes de inicializar plugins.
- Firebase.initializeApp: Inicializa o Firebase com as opções da plataforma.
- runApp(const MyApp()): Executa o widget principal da aplicação.
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Firebase CRUD - Student Attendance',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
),
home: Home(),
);
}
}- MaterialApp: Define o tema, título e tela inicial da aplicação.
- debugShowCheckedModeBanner: Remove a faixa de debug.
- theme: Utiliza um esquema de cores baseado em roxo.
- home: Define o widget
Homecomo tela inicial.
Para rodar a aplicação, utilize o comando:
flutter run- Flutter SDK
- firebase_core
- Arquivo de opções do Firebase (
firebase_options.dart) - Página inicial (
pages/home.dart)
Arquivo: main.dart
Este arquivo implementa a tela principal da aplicação de controle de presença de estudantes, utilizando Flutter e integração com o Firebase Firestore.
- Visão Geral
- Importações
- Classe Home
- Principais Métodos e Funcionalidades
- showStudentsList()
- build()
- Interação com Firestore
- Componentes da Interface
- Como Funciona a Presença
- Adicionar Estudante
- Exemplos Visuais
A tela Home exibe uma lista de estudantes cadastrados no Firestore, permitindo visualizar informações, alterar o status de presença e remover estudantes. Também oferece um botão para adicionar novos estudantes.
cloud_firestore.dart: Para acesso ao banco de dados Firestore.flutter/material.dart: Componentes visuais do Flutter.add_student.dart: Tela para adicionar novos estudantes.services/firestore_database.dart: Serviço para operações CRUD no Firestore.
- Tipo:
StatefulWidget - Descrição: Widget principal da tela de presença dos estudantes.
- Estado:
_HomeState
- Retorna um
StreamBuilderque escuta as alterações na coleção de estudantes do Firestore. - Exibe cada estudante em um
ListView, mostrando nome, número de matrícula, idade e status de presença. - Permite:
- Alterar o status de presença (Presente/Ausente) com um clique.
- Remover um estudante com o ícone de lixeira.
- Monta a interface principal da tela:
- Título "Student Attendance"
- Lista de estudantes (expandida)
- Botão flutuante para adicionar novo estudante
- Leitura: Utiliza um stream para listar estudantes em tempo real.
- Atualização: Permite alternar o status de presença do estudante.
- Remoção: Permite deletar um estudante do banco de dados.
- ListView: Lista de estudantes.
- Container: Exibe informações de cada estudante.
- Botão de presença: Verde para "Presente", vermelho para "Ausente", ambos clicáveis para alternar o status.
- FloatingActionButton: Adiciona novo estudante.
- O status de presença é um booleano (
attendance). - Se
true, exibe "Present" (verde); sefalse, exibe "Absent" (vermelho). - Ao clicar, o status é alternado e atualizado no Firestore.
- O botão flutuante abre a tela de cadastro de estudante (
AddStudent).
Abaixo, exemplos da interface de listagem e controle de presença dos estudantes:
Arquivo: home.dart
Este arquivo implementa a tela de cadastro de estudantes para a aplicação Flutter integrada ao Firebase Firestore.
A tela AddStudent permite ao usuário inserir os dados de um novo estudante (nome, idade e número de matrícula) e salvá-los no banco de dados Firestore. Também oferece feedback visual sobre o sucesso ou erro no cadastro.
flutter/material.dart: Componentes visuais do Flutter.flutter_firebase_crud/services/firestore_database.dart: Serviço para operações CRUD no Firestore.random_string/random_string.dart: Geração de IDs aleatórios para estudantes.
- Tipo:
StatefulWidget - Descrição: Tela para adicionar um novo estudante.
- Estado:
_AddStudentState
studentNameController: Controla o campo de nome do estudante.studentAgeController: Controla o campo de idade do estudante.studentRollNumberController: Controla o campo de número de matrícula.
- AppBar customizada: Com botão de voltar e título "Add Student".
- Campos de texto: Para nome, idade e número de matrícula, cada um com rótulo e campo de entrada.
- Botão "Save": Salva os dados do estudante no Firestore.
- Antes de salvar, verifica se todos os campos estão preenchidos.
- Exibe um
SnackBarvermelho caso algum campo esteja vazio.
- Gera um ID aleatório para o estudante.
- Cria um mapa com os dados do estudante, incluindo o campo
"attendance": false. - Chama o método
addStudentdo serviço Firestore. - Exibe um
SnackBarverde em caso de sucesso e limpa os campos.
- Usuário preenche os campos.
- Ao clicar em "Save":
- Se algum campo estiver vazio, exibe mensagem de erro.
- Se todos os campos estiverem preenchidos:
- Salva os dados no Firestore.
- Exibe mensagem de sucesso.
- Limpa os campos para novo cadastro.
- O botão de voltar retorna para a tela anterior.
- O campo de presença do estudante é sempre iniciado como
false(ausente). - O layout utiliza espaçamentos e estilos para melhor usabilidade.
Abaixo, exemplos da interface de cadastro de estudantes:
Arquivo: add_student.dart
Este arquivo define a classe FirestoreDatabase, responsável por realizar operações CRUD na coleção students do Firestore.
A classe FirestoreDatabase centraliza o acesso ao banco de dados Firestore, fornecendo métodos para adicionar, listar, atualizar e remover estudantes.
- Descrição: Adiciona um novo estudante à coleção
studentscom o ID fornecido. - Parâmetros:
studentData: Mapa com os dados do estudante (nome, idade, matrícula, presença, etc).studentId: String com o ID único do estudante.
- Retorno:
Futureque completa quando a operação termina. - Tratamento de Erros: Imprime mensagem de erro no console.
- Descrição: Retorna um stream em tempo real da coleção
students. - Uso: Permite atualizar a interface automaticamente quando há mudanças nos dados dos estudantes.
- Descrição: Atualiza o status de presença (
attendance) de um estudante específico. - Parâmetros:
attendance: Novo valor booleano para presença.studentId: ID do estudante a ser atualizado.
- Retorno:
Futureque completa quando a operação termina. - Tratamento de Erros: Imprime mensagem de erro no console.
- Descrição: Remove um estudante da coleção
studentspelo ID. - Parâmetros:
studentId: ID do estudante a ser removido.
- Retorno:
Futureque completa quando a operação termina. - Tratamento de Erros: Imprime mensagem de erro no console.
- Todas as operações são assíncronas.
- Os métodos usam tratamento básico de erros, apenas exibindo mensagens no console.
- A coleção utilizada no Firestore é sempre
students.
Arquivo: firestore_database.dart







