💾 P06: Meus Jogos Favoritos (Catálogo Offline)
Neste projeto, você vai criar um “Save Game” real para o seu app! Você aprenderá a usar o banco de dados Room para salvar uma lista dos seus jogos favoritos. Mesmo se você desligar o celular, seus jogos continuarão salvos.
🎯 Objetivo do Projeto
Criar um catálogo onde você pode digitar o nome de um jogo, selecionar o console e salvar. O app deve mostrar uma lista de todos os jogos salvos no banco de dados.
📖 Dicionário do Projeto
-
Database (Room): O banco de dados interno do Android.
-
Entity (Entidade): É como chamamos a “Tabela” no código. No nosso caso, a tabela se chama
Jogo. -
DAO (Data Access Object): É o “Controle Remoto” do banco. É uma lista de comandos: “Salvar Jogo”, “Ver Todos”, “Apagar”.
-
Repository: É o “Gerente”. Ele organiza quem pede os dados (a tela) e quem entrega (o banco).
🏗️ Passo a Passo (Wizard do Android Studio)
-
Template: Empty Compose Activity.
-
Name:
AppColecaoJogos_SeuNome. -
Package Name:
br.com.curso.colecaojogos.
🎨 Parte 1: A Tabela (Entity)
NOTE
Para simplificar, colocamos a Entidade, o DAO e o Database no mesmo arquivo
JogoDatabase.ktna pastadata/local.
@Entity(tableName = "jogos")
data class Jogo(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
val nome: String,
val plataforma: String,
val status: String = "Pendente"
)⚙️ Parte 2: O Controle Remoto (DAO)
@Dao
interface JogoDao {
@Insert
suspend fun inserir(jogo: Jogo)
@Query("SELECT * FROM jogos ORDER BY nome ASC")
fun listarTodos(): Flow<List<Jogo>>
}✅ Gabarito Comentado (ViewModel + UI)
No Compose, a tela nunca mexe no banco direto. Ela pede para o ViewModel.
class JogoViewModel(private val dao: JogoDao) : ViewModel() {
// A lista que a tela vai ficar vigiando
val listaDeJogos = dao.listarTodos()
fun adicionarJogo(nome: String, console: String) {
viewModelScope.launch {
dao.inserir(Jogo(nome = nome, plataforma = console))
}
}
}📂 Organização de Pastas (Simplificada)
br.com.curso.colecaojogos.data.local → JogoDatabase.kt (Contém Entity, DAO e Database).
br.com.curso.colecaojogos → MainActivity.kt (Contém a UI e o ViewModel).
📐 Desenho no Draw.io
Faça o Diagrama ER (Entidade-Relacionamento) básico:
Tabela JOGOS (id [PK], nome [String], plataforma [String]).
??? Requisitos de Configuração e Solução de Problemas
Se você encontrar erros ao tentar rodar este projeto, verifique os pontos abaixo:
1. Suporte ao AndroidX
O arquivo gradle.properties na raiz do projeto deve conter:
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx2048m
2. Dependências Necessárias
Certifique-se de adicionar as dependências do Room e do ViewModel no build.gradle.