You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不支持bool列的SQFLite中存储Dart布尔变量isChecked?

在SQFLite中存储布尔类型变量的实现方法

1. 建表时定义整数列

SQFLite不支持布尔类型列,直接创建整数列来存储,约定0代表false,1代表true,建表语句示例:

CREATE TABLE tasks (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  is_checked INTEGER NOT NULL DEFAULT 0 -- 用整数存布尔值,默认false
);

2. Dart布尔值转整数存入数据库

你的isChecked是bool类型变量,用三元运算符就能快速完成转换:

// bool转int:true→1,false→0
int storedValue = isChecked ? 1 : 0;

// 插入数据示例
await db.insert(
  'tasks',
  {
    'name': '完成作业',
    'is_checked': storedValue, // 存入转换后的整数
  },
);

// 更新数据示例
await db.update(
  'tasks',
  {'is_checked': storedValue},
  where: 'id = ?',
  whereArgs: [1],
);

3. 从数据库读取整数转回布尔值

查询数据后,把整数转回bool类型,直接关联UI控件:

// 查询数据
List<Map<String, dynamic>> maps = await db.query('tasks');

// 遍历结果并转换
List<Task> tasks = maps.map((map) {
  return Task(
    id: map['id'],
    name: map['name'],
    isChecked: map['is_checked'] == 1, // int转bool:1→true,其他值为false
  );
}).toList();

这样就能在SQFLite中实现布尔值的存储与读取,和你的UI控件isChecked无缝关联。

内容的提问来源于stack exchange,提问作者DktPhl2018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:12:06