Base de dados equivalente ao Room para Flutter
O Floor fornece uma abstração de SQLite para seus aplicativos Flutter inspirados na biblioteca de persistência Room. Ele vem com mapeamento automático entre objetos na memória e linhas do banco de dados, enquanto ainda oferece controle total do banco de dados com o uso de SQL
Você pode salvar, consultar e deletar seus objetos de forma simples e direta com o banco de dados do Floor!
Conteudo
Começar
Para começar com o Floor, vamos adicionar essas dependências ao pubspec.yaml
dependencies: flutter: sdk: flutter floor: ^1.3.0 dev_dependencies: floor_generator: ^1.3.0 build_runner: ^2.1.2
Classes de entidade
A classe de entidade representará uma tabela de banco de dados Columns. A @entity marca a classe como uma classe persistente e você precisa adicionar uma primaryKey
// entity/student.dart import 'package:floor/floor.dart'; @Entity(tableName: 'students') class Student { @primaryKey(autoGenerate: true) final int id; final String name; final Float grade; Person(this.id, this.name, this.grade); }
DAO (objeto de acesso a dados)
Este componente é responsável por gerenciar o acesso ao banco de dados SQLite subjacente.
Você pode usar o SQLite normal @Query ou @insert , @delete e @update
// dao/student_dao.dart import 'package:floor/floor.dart'; @dao abstract class StudentDao { @Query('SELECT * FROM students') Future<List<Student>> findAllStudents(); @Query('SELECT * FROM students WHERE id = :id') Stream<Student> findStudentById(int id); @insert Future<void> insertStudent(Student student); @Query('DELETE FROM students WHERE id = :id') Future<void> delete(int id); }
Base de dados
Tem que ser uma classe abstrata que estende FloorDatabase
// database.dart // required package imports import 'dart:async'; import 'package:floor/floor.dart'; import 'package:sqflite/sqflite.dart' as sqflite; import 'dao/student_dao.dart'; import 'entity/student.dart'; part 'database.g.dart'; // the generated code will be there @Database(version: 1, entities: [Student]) abstract class AppDatabase extends FloorDatabase { StudentDao get studentDao; }
part 'database.g.dart';
— certifique-se de adicionar esta linha e ela deve ser igual ao nome do seu arquivo de banco de dados, que no nosso caso é database.dart
.
Construir o banco de dados
Depois disso, vá para o terminal e execute flutter packages pub run build_runner build
, certifique-se de adicionar flutter às suas variáveis de ambiente.
Finalmente!
Agora você pode simplesmente acessar seu banco de dados usando $Floor + seu nome de classe de banco de dados que no nosso caso é AppDatabase
final database = await $FloorAppDatabase.databaseBuilder('app_database.db').build(); final studentDao = database.studentDao; final student= Student(1, 'Frank', 99); await studentDao.insertStudent(student); final result = await personDao.findPersonById(1);
Se você deseja gerar o Id automaticamente, basta passar null em vez de Id no objeto de entidade, ou seja:
final student= Student(null, 'Frank', 99); await studentDao.insertStudent(student);
Espero que você tenha gostado deste banco de dados agradável e simples.