Flutter数据库生成器插件brick_supabase_generators的使用
Flutter数据库生成器插件brick_supabase_generators的使用
Brick Supabase Generators
Code generator that provides (de)serializing functions for Brick adapters using SupabaseProvider. This package does not produce code. It can be imported into other Brick build domains.
This package should not be imported into an end application as it does not generate code.
使用
在您的AnnotationSuperGenerator
中应用SupabaseSerdes
:
import 'package:brick_supabase_generators/supabase_serdes.dart';
class MyDomainGenerator extends AnnotationSuperGenerator<ConnectMyDomainWithSupabase> {
final String superAdapterName;
final String repositoryName;
const MyDomainGenerator({
this.superAdapterName = 'MyDomain',
this.repositoryName = 'MyDomainWithSupabase',
});
/// Given an [element] and an [annotation], scaffold generators
List<SerdesGenerator> buildGenerators(Element element, ConstantReader annotation) {
// 使用 SupabaseSerdes 生成序列化和反序列化函数
final supabase = SupabaseSerdes(element, annotation, repositoryName: repositoryName);
// 如果有其他提供商,也可以添加其他序列化生成器
final otherProvider = OtherProviderSerdes(element, annotation, repositoryName: repositoryName);
// 存储所有生成器的列表
final generators = <SerdesGenerator>[];
// 将 SupabaseSerdes 生成器添加到列表中
generators.addAll(supabase.generators);
// 如果有其他提供商,将其他提供商的生成器也添加到列表中
generators.addAll(otherProvider.generators);
// 返回生成器列表
return generators;
}
}
完整示例Demo
以下是一个完整的示例,展示如何使用brick_supabase_generators
插件:
-
创建一个自定义生成器类:
import 'package:brick_supabase_generators/supabase_serdes.dart'; import 'package:build/build.dart'; import 'package:source_gen/source_gen.dart'; class MyDomainGenerator extends AnnotationSuperGenerator<ConnectMyDomainWithSupabase> { final String superAdapterName; final String repositoryName; const MyDomainGenerator({ this.superAdapterName = 'MyDomain', this.repositoryName = 'MyDomainWithSupabase', }); @override List<SerdesGenerator> buildGenerators(Element element, ConstantReader annotation) { final supabase = SupabaseSerdes(element, annotation, repositoryName: repositoryName); final otherProvider = OtherProviderSerdes(element, annotation, repositoryName: repositoryName); final generators = <SerdesGenerator>[]; generators.addAll(supabase.generators); generators.addAll(otherProvider.generators); return generators; } }
-
配置
build.yaml
文件:# 配置构建器 builders: my_domain_generator: import: "lib/my_domain_generator.dart" builder_factories: ["MyDomainGenerator.create"] build_extensions: {".dart": [".g.dart"]} auto_apply: dependents build_to: source applies_builders: ['source_gen|combining_builder']
-
编写实体类并使用注解:
// 假设有一个实体类 `User` [@ConnectMyDomainWithSupabase](/user/ConnectMyDomainWithSupabase)() class User { final String name; final int age; User({required this.name, required this.age}); }
更多关于Flutter数据库生成器插件brick_supabase_generators的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库生成器插件brick_supabase_generators的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
brick_supabase_generators
是一个 Flutter 插件,用于生成与 Supabase 数据库交互的代码。它可以帮助开发者快速生成与 Supabase 数据库表对应的模型类、仓库类以及相关的 CRUD 操作代码,从而减少手动编写重复代码的工作量。
安装
首先,你需要在 pubspec.yaml
文件中添加 brick_supabase_generators
和 brick_supabase
依赖:
dependencies:
brick_supabase: ^0.0.1
flutter:
sdk: flutter
dev_dependencies:
brick_supabase_generators: ^0.0.1
build_runner: ^2.0.0
然后,运行 flutter pub get
来安装依赖。
使用步骤
-
创建模型类
首先,你需要创建一个 Dart 类来表示你的数据库表。例如,假设你有一个
User
表,你可以创建一个User
类:import 'package:brick_supabase/brick_supabase.dart'; [@SupabaseModel](/user/SupabaseModel)() class User { final int id; final String name; final String email; User({required this.id, required this.name, required this.email}); }
注意:
[@SupabaseModel](/user/SupabaseModel)()
注解用于标记这个类是一个 Supabase 模型类。 -
运行代码生成器
使用
build_runner
来生成代码。在终端中运行以下命令:flutter pub run build_runner build
这将生成与
User
类对应的 Supabase 仓库类和相关的 CRUD 操作代码。 -
使用生成的代码
生成的代码将包括一个
UserRepository
类,你可以使用这个类来执行与User
表相关的 CRUD 操作。例如:import 'package:brick_supabase/brick_supabase.dart'; void main() async { final supabaseClient = SupabaseClient('your-supabase-url', 'your-supabase-key'); final userRepository = UserRepository(supabaseClient); // 创建一个新用户 final newUser = User(id: 1, name: 'John Doe', email: 'john@example.com'); await userRepository.insert(newUser); // 获取所有用户 final users = await userRepository.getAll(); print(users); // 更新用户 final updatedUser = users.first.copyWith(name: 'Jane Doe'); await userRepository.update(updatedUser); // 删除用户 await userRepository.delete(updatedUser.id); }
配置
你可以在 build.yaml
文件中配置 brick_supabase_generators
的行为。例如,你可以指定生成代码的路径、是否生成测试代码等。
targets:
$default:
builders:
brick_supabase_generators|supabaseModelGenerator:
options:
output_dir: lib/generated/
generate_tests: true