我需要在我的Hive数据库中存储颜色,以便在我的电子商务应用程序中检索,它给了我下面的错误,说我需要制作一个适配器,有人能告诉我如何制作一个颜色适配器吗?
part 'items_model.g.dart';
@HiveType(typeId: 0)
class Item {
@HiveField(0)
final String name;
@HiveField(1)
final double price;
@HiveField(2)
final String? description;
@HiveField(3)
var image;
@HiveField(4)
final String id;
@HiveField(5)
final String shopName;
@HiveField(6)
final List<Category> category;
@HiveField(7)
Color? color;
@HiveField(8)
int? quantity;
Item({
required this.category,
required this.image,
required this.name,
required this.price,
this.description,
required this.id,
required this.shopName,
this.color,
required this.quantity,
});
}
有谁知道如何生成或创建颜色适配器?因为我不知道如何
E/flutter ( 4621): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: HiveError: Cannot write, unknown type: MaterialColor. Did you forget to register an adapter?
4条答案
按热度按时间c6ubokkw1#
我认为这里最简单的方法是存储颜色的
int
值。举个例子
所以你的
Hive
颜色可以这样存储然后,在您的应用程序中,当您从存储中创建颜色时,它看起来像这样。
hl0ma9xz2#
基于@Cryptozord和@Loren之前的回答。一个人可以简单地为颜色编写特定的适配器
并记住将适配器注册到
确保您的typeId没有被其他模型占用
现在您可以使用
e5njpo683#
我为此困惑了一整天,我想出了如何做到这一点。你应该像这样手动创建你的适配器:
Color需要保存并写入为Uint 32值,因为Int 32值的范围仅为-2147483648至2147483647,无符号整数为0至4294967295。Color()的整数值可以超过2147483647。如果不使用Uint 32,则值将无法正确存储,并且会保存奇怪的颜色。
bnlyeluc4#
在hive的最后一次更新中,实际上有一个默认的颜色适配器,您可以通过导入
它基本上与Markos Evlogimenos' answer中的适配器相同,但您不必自己编写任何东西。我通过跟随他的例子偶然发现了这一点,并偶然发现了上面的一个导入选项。