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

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

博客园 - 张润昊

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
  • 如果有新增 / 删除字段,都不会影响
  • 如果有更新字段,例如字段的数据类型,会报错
  • 建议,变更字段的时候,都使用新赠字段进行操作