gpt4 book ai didi

flutter - 如何保存 List 并使用 Hive 检索?
转载 作者:行者123 更新时间:2023-12-03 02:40:26 24 4
gpt4 key购买 nike

我有一个墙纸应用程序,它使用 Firestore 来存储墙纸。

我想使用 Hive 来存储来自 cloud firestore 的壁纸列表,但是如何保存壁纸列表并在以后检索它?

当我尝试保存列表时,出现此错误:

E/flutter ( 9995): [ERROR:flutter/shell/common/shell.cc(199)] Dart Error: Unhandled exception: E/flutter ( 9995): HiveError: Cannot write, unknown type: Wallpaper. Did you forget to register an adapter?



代码:
class Wallpaper extends HiveObject {


String date;
String url;

Wallpaper();

}

static Future<void> addWallpapers({@required String boxName, @required List<Wallpaper> wallpapers}) async {

var box = await Hive.openBox(boxName);
box.put(boxName, wallpapers);

print("WALLPAPER ADICIONADO NO HIVE!");

}

static Future<List<Wallpaper>> getWallpapers({@required String boxName}) async {

var box = await Hive.openBox(boxName);

List<Wallpaper> wallpapers = box.get("latest");

return wallpapers;

}

最佳答案

你必须用@HiveType() 注释你的对象。并且必须注册您的对象 Hive.registerAdapter(WallpaperAdapter(), 0);。

然而,你有没有 part 'wallpaper.g.dart';生成所需的代码?

编辑:
首先,在您的 pubspec 上导入依赖项:

dependencies:
hive: ^[version]
hive_flutter: ^[version]

dev_dependencies:
hive_generator: ^[version]
build_runner: ^[version]
Hive.registerAdapter(MyObjectAdapter(), 0);你应该把你的 main.dart放在里面功能。就在 runApp 之前

你的 HiveObject 应该有这样的注释:

@HiveType()
class Person extends HiveObject {
@HiveField(0);
String name;

@HiveField(1);
int age;
}

将此命令放在您的导入附近 part 'person.g.dart';并在终端上运行代码生成。 flutter packages pub run build_runner build .

带有代码生成功能的 Hive 功能,因此此命令将生成您需要的文件

关于flutter - 如何保存 List<Object> 并使用 Hive 检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59413228/

24 4 0