dja*_*ler 8 dart flutter google-cloud-firestore flutter-hive
我有一个墙纸应用程序,它使用 Firestore 来存储墙纸。
我想使用 Hive 来存储来自 cloud firestore 的壁纸列表,但是如何保存壁纸列表并在以后检索它?
当我尝试保存列表时,出现此错误:
E/flutter (9995): [ERROR:flutter/shell/common/shell.cc(199)] Dart 错误:未处理的异常:E/flutter (9995):HiveError:无法写入,未知类型:墙纸。您是否忘记注册适配器?
代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
您必须使用 @HiveType() 注释您的对象。并且必须注册您的对象 Hive.registerAdapter(WallpaperAdapter(), 0);。
然而,您是否必须part 'wallpaper.g.dart';
生成所需的代码?
编辑:首先导入您的 pubspec 的依赖项:
dependencies:
hive: ^[version]
hive_flutter: ^[version]
dev_dependencies:
hive_generator: ^[version]
build_runner: ^[version]
Run Code Online (Sandbox Code Playgroud)
您应该将其Hive.registerAdapter(MyObjectAdapter(), 0);
放入您的main.dart
函数中。就在 runApp 之前
你的 HiveObject 应该有这样的注释:
dependencies:
hive: ^[version]
hive_flutter: ^[version]
dev_dependencies:
hive_generator: ^[version]
build_runner: ^[version]
Run Code Online (Sandbox Code Playgroud)
将此命令放在您的导入附近part 'person.g.dart';
并在终端上运行代码生成。flutter packages pub run build_runner build
。
Hive功能带有代码生成,所以这个命令会生成你需要的文件
归档时间: |
|
查看次数: |
11675 次 |
最近记录: |