Flutter如何使用drift数据库 已按要求改写标题

“在Flutter项目中集成drift数据库时遇到几个问题:1) 如何正确配置pubspec.yaml文件添加依赖?2) 怎样建立数据库连接和创建表结构?3) 能否提供一个基础的CRUD操作示例?4) 数据库升级迁移的最佳实践是什么?目前看官方文档有些步骤不太清楚,求有经验的开发者分享具体实现方法。”

2 回复

在Flutter中使用drift数据库,首先在pubspec.yaml添加依赖。然后定义数据表和查询语句。通过DatabaseAccessor类操作数据库,支持增删改查。

更多关于Flutter如何使用drift数据库 已按要求改写标题的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用drift(原名moor)数据库的步骤如下:

  1. 添加依赖
    pubspec.yaml 中添加:

    dependencies:
      drift: ^2.13.0
      sqlite3_flutter_libs: ^0.5.0
    dev_dependencies:
      drift_dev: ^2.13.0
      build_runner: ^2.4.0
    
  2. 创建数据表
    定义一个继承 Table 的类:

    import 'package:drift/drift.dart';
    
    class Todos extends Table {
      IntColumn get id => integer().autoIncrement()();
      TextColumn get title => text()();
      BoolColumn get completed => boolean().withDefault(const Constant(false))();
    }
    
  3. 创建数据库类
    使用 [@DriftDatabase](/user/DriftDatabase) 注解并包含表:

    part 'database.g.dart';
    
    [@DriftDatabase](/user/DriftDatabase)(tables: [Todos])
    class AppDatabase extends _$AppDatabase {
      AppDatabase() : super(_openConnection());
      
      @override
      int get schemaVersion => 1;
    }
    
    LazyDatabase _openConnection() {
      return LazyDatabase(() async {
        final dbFolder = await getApplicationDocumentsDirectory();
        final file = File(p.join(dbFolder.path, 'db.sqlite'));
        return NativeDatabase(file);
      });
    }
    
  4. 生成代码
    运行命令生成必要文件:

    flutter pub run build_runner build
    
  5. 基本操作示例

    • 插入数据
      await database.into(database.todos).insert(
          TodosCompanion.insert(title: '示例任务'));
      
    • 查询数据
      final allTodos = await database.select(database.todos).get();
      
    • 更新数据
      await (database.update(database.todos)
          .replace(Todo(id: 1, title: '新标题', completed: true)));
      
    • 删除数据
      await (database.delete(database.todos)
          .where((t) => t.id.equals(1))).go();
      
  6. 优势特性

    • 类型安全:编译时检查SQL查询
    • 自动生成代码简化操作
    • 支持事务、数据流监听和复杂查询

通过以上步骤即可在Flutter中高效使用drift管理本地数据。

回到顶部