惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
H
Help Net Security
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
A
About on SuperTechFans
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
Martin Fowler
Martin Fowler
I
InfoQ
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
U
Unit 42
The Cloudflare Blog
Y
Y Combinator Blog

博客园 - 张润昊

项目文档治理方案形成全过程(证据审计版) Codex Subagent :如何隔离 Coding Agent 的上下文 在AI时代, 关于编程的思考 Coding Agent 工程化实践《一》 : 前端页面自验实践 大模型为什么会产生幻觉?从原理到工程防御 Codex 的 Skill 到底是怎么被调用的? Superpowers:如何约束 Coding Agent 使用 Codex 的一次危险提醒 我的Nginx 的配置分析 NextJS 安全漏洞分析 AI工具学习02 - 使用 ChatGPT 进行 PRD 产品设计 NextJS 02 - 服务端渲染 NextJS01 - page router - 问题列表 Flutter02-布局 React 学习 03-两种 Api 的使用 React 学习 02-commit 渲染 React 学习 01-时间切片 安卓低机型卡顿分析以优化方案 命令行 查找某个结尾的文件. 总结下vim快捷键 React技术揭密学习(二) React技术揭密学习(一) Build your own React 前端监控系统博客总结 记账项目 - webpack优化 React源码解携(二): 走一趟render流程 macos更新后, MySQL不能启动问题
Flutter01-本地数据库 isar
张润昊 · 2025-07-22 · via 博客园 - 张润昊

Flutter01-本地数据库 isar

介绍

  • 一个跨平台的本地数据库。
  • no-sql 存储
  • 底层是 c++,采用二进制存储。

使用

flutter pub add isar isar_flutter_libs path_provider
flutter pub add -d isar_generator build_runner
  • 声明class上的注解@collection相当于一张表
import 'package:isar/isar.dart';

part 'user.g.dart';

@collection
class User {
  Id id = Isar.autoIncrement; // you can also use id = null to auto increment

  String? name;

  int? age;
}
  • 执行 build 就能自动生成一些文件,操作数据库
flutter pub run build_runner build
  • 然后代码中进行初始化
   final dir = await getApplicationDocumentsDirectory();
    return await Isar.open(
      [
        RecordModelSchema,
        AccountModelSchema,
        CategoryModelSchema,
      ],
      directory: dir.path,
    );
  • 然后就能在其他代码中进行应用了
  final isar = await isarService.db;
  await isar.accountModels.putAll([cash, credit]);

解释几个疑问

关于每次变动以后 build 生成 schema 文件

  • flutter pub run build_runner build
  • 根据@collection注解,生成一系列文件
    • <ModuleName>Schema,用来描述数据库.
    • 包括一些列操作数据库的方法
    • 还有,序列化反序列化的方法
  • build_runner时 dart 官方提供,生成代码生成工具
  • isar_generator是 isar 设计的代码生成插件
  • build_runner 会调用 isar_generator

关于 schema 兼容

  • 每次 build 的时候,都会对比上一次 schema
  • 如果有新增 / 删除字段,都不会影响
  • 如果有更新字段,例如字段的数据类型,会报错
  • 建议,变更字段的时候,都使用新赠字段进行操作