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

Flutter使用Floor操作SQLite遇List<String?>类型不支持错误求解决

解决Floor中List<String?>类型不支持的问题

SQLite本身没有原生列表类型,Floor无法直接识别List<String?>作为数据库列类型,需要通过自定义类型转换器实现列表与数据库可存储格式的互转,具体操作如下:

步骤1:创建类型转换器类

实现TypeConverter,将List<String?>转换为JSON字符串存储,读取时再反序列化为列表:

import 'package:floor/floor.dart';
import 'dart:convert';

class StringListConverter extends TypeConverter<List<String?>?, String?> {
  @override
  List<String?>? decode(String? databaseValue) {
    if (databaseValue == null) return null;
    final List<dynamic> rawList = json.decode(databaseValue);
    return rawList.map((item) => item as String?).toList();
  }

  @override
  String? encode(List<String?>? value) {
    if (value == null) return null;
    return json.encode(value);
  }
}

步骤2:给实体类字段绑定转换器

修改你的实体类,在someList字段上添加@TypeConverters注解,指定使用上面的转换器:

@Entity(
  tableName: some_table_name,
  primaryKeys: ['identifier'],
)
class someEntity {
  // 其他字段...
  
  @TypeConverters([StringListConverter])
  List<String?> someList;

  // 构造函数及其他逻辑...
}

步骤3:重新生成Floor代码

执行命令重新生成代码即可:

flutter packages pub run build_runner build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:45:36