返回

Flutter持久化库drift——入门指南(使用SQL)

前端

导言

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:

  1. 将moor依赖项替换为drift依赖项。
  2. 更新数据库架构文件以匹配Drift的语法。
  3. 编写一个迁移脚本以将现有数据迁移到新的Drift数据库。

结论

Drift是一个强大的库,它使用户能够使用SQL对数据进行建模和操作。它易于使用并且功能丰富,使其成为Flutter开发人员的理想选择。本指南提供了使用Drift入门所需的一切,并指导您从现有项目迁移。