1
resposta

[Dúvida] Arquivo database.g.dart com várias entidades

Testando um projeto com 5(cinco) entidades percebi que todas estão representadas no arquivo database.g.dart. Como podemos orientar o projeto para desmembrar um arquivo para cada entidade?

1 resposta

Oii Francisco, tudo bem?

É uma ótima observação notar que todas as entidades estão juntas no arquivo database.g.dart em seu projeto Flutter. Isso costuma ocorrer quando se usa o pacote moor para gerenciar o banco de dados SQLite, e ele gera um único arquivo Dart contendo todas as tabelas e operações relacionadas.

Para desmembrar esse arquivo e ter um arquivo gerado para cada entidade, você pode tentar organizar seu projeto de forma que cada entidade tenha seu próprio arquivo de definição. Aqui está um exemplo prático de como você pode fazer isso:

  1. Criando um arquivo Dart para cada entidade. Por exemplo, se você tem entidades como User, Order, Product, etc., crie user.dart, order.dart, product.dart, etc.

  2. Em cada um desses arquivos, precisa definir a tabela correspondente à entidade usando as classes e métodos fornecidos pelo moor.

  3. Pode criar um arquivo, por exemplo, my_database.dart. Neste arquivo, você importará todas as suas entidades e usará a classe @UseMoor para incluir todas as tabelas. Um ex:

import 'package:moor/moor.dart';
import 'user.dart';
import 'order.dart';
import 'product.dart';

part 'my_database.g.dart';

@UseMoor(tables: [Users, Orders, Products])
class MyDatabase extends _$MyDatabase {
  MyDatabase(QueryExecutor e) : super(e);

  // Você pode adicionar métodos para acessar os dados aqui
}
  1. Quando você executa o build runner, ele deve agora gerar um arquivo my_database.g.dart que inclui o código necessário para todas as tabelas especificadas.

Essa abordagem mantém seu código mais organizado e facilita a manutenção de cada entidade separadamente. Cada mudança nas entidades requer que você reexecute o build runner para regerar os arquivos .g.dart.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software