返回
Flutter持久化库drift——入门指南(使用SQL)
前端
2023-12-10 23:23:44
导言
Drift是Flutter的强大且用户友好的持久化库。它使用户能够使用SQL而不是对象关系映射器(ORM)对数据进行建模和操作。本指南将指导您使用Drift的SQL版本开始使用Flutter的持久化,或从现有项目迁移到Drift。
1. 安装
要安装Drift,请将以下内容添加到您的pubspec.yaml
文件:
dependencies:
drift: ^1.0.0-rc.1
然后运行flutter packages get
。
2. 创建数据库
创建一个Dart文件(例如database.dart
)来定义您的数据库架构。例如:
import 'package:drift/drift.dart';
class MyDatabase extends _$MyDatabase {
MyDatabase(QueryExecutor e) : super(e);
@override
int get schemaVersion => 1;
@override
MigrationStrategy get migration => MigrationStrategy(
onUpgrade: (Migrator m) async {
await m.createTable(table);
},
);
final table = Table('table')..addIntColumn('id')..addTextColumn('name');
}
3. 初始化数据库
在您的应用程序中,使用driftDatabase
构造函数创建一个数据库:
import 'package:drift/drift.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;
class MyDatabase {
late final Database executor;
Future<void> init() async {
final dbFolder = await getApplicationDocumentsDirectory();
final file = File(p.join(dbFolder.path, 'db.sqlite'));
executor = await driftDatabase(file, logStatements: true);
}
}
4. 使用数据库
您可以使用executor
对象与数据库进行互动。例如:
Future<void> insertRow(String name) async {
await executor.into(table).insert(Insertable(name: name));
}
Future<List<DataClass>> getRows() async {
return await executor.select(table).get();
}
迁移到Drift
如果您已经有一个使用moor的项目,您可以通过以下步骤将其迁移到Drift:
- 将moor依赖项替换为drift依赖项。
- 更新数据库架构文件以匹配Drift的语法。
- 编写一个迁移脚本以将现有数据迁移到新的Drift数据库。
结论
Drift是一个强大的库,它使用户能够使用SQL对数据进行建模和操作。它易于使用并且功能丰富,使其成为Flutter开发人员的理想选择。本指南提供了使用Drift入门所需的一切,并指导您从现有项目迁移。