【发布时间】:2020-01-23 15:49:27
【问题描述】:
在我的 Flutter 项目中,我有一个类别,其中包含一个字符串、图标、图标数据和两种颜色: (我不想存储图标,因为我可以用我的 iconData 重新创建它)
class Category {
Icon icon;
IconData iconData;
Color color;
Color backgroundcolor;
String name;
[...]
Map<String, dynamic> toMap() {
return {
'iconData': iconData,
'color': color,
'backgroundcolor': backgroundcolor,
'name': name
};
}
对于我的项目,我导入了 sqflite 数据库,创建了一个表类别(使用“CREATE TABLE 类别(名称文本,iconData BLOB,颜色 BLOB,背景颜色 BLOB”)),现在想将一个类别插入到我的数据库中,如下所示:
Future<void> insertCategory(Category category) async {
// get reference to the database
final Database db = await database;
// insert new category
await db.insert('categories', category.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace);
print("Category inserted.");
}
但是当我尝试插入一个类别时,我得到一个参数错误(无效参数:'IconData' 的实例),我无法弄清楚问题所在。
【问题讨论】:
-
Blob 是原始数据 - 字节数组(很可能)。在这里,我看不到 IconData 到字节数组的转换。所以你可以扩展你的
toMap来这样做。其他解决方案是只存储codePoint(可能是fontFamily),因为这就是你所需要的,并在需要时从codePoint和fontFamily中构造IconData。