应用程序重启后无法从 Hive 检索数据
Can not retrieve data from Hive after application restart
一切正常,直到我 重新启动 应用程序(关闭应用程序并打开它)并且看不到以前保存的数据,但是如果我检查框状态它已打开并且空的。我做错了什么吗?
- 运行 真机小米红米4A(实际出现问题
也在 Iphone 台设备上)
- 正在研究 Mac M1
- Flutter (Channel stable, 2.2.2, on macOS 11.2 20D64 darwin-arm,
语言环境 ru)
- 我在 github repo 中发现了“问题”,但没有任何用处
main.dart
void main() async {
// init hive
WidgetsFlutterBinding.ensureInitialized();
await lds.init();
// init app
runApp(MyApp());
}
配置单元初始化文件
Future<void> init() async {
final appDocumentDirectory = await path.getApplicationSupportDirectory();
Hive.init(appDocumentDirectory.path);
// registering entities
Hive.registerAdapter(ItemModelAdapter());
}
保存和加载功能
class ItemLocalDataSource {
static const String BOX_ITEMS = 'item-models';
Future<List<ItemModel>> getLocalItems() async {
await Hive.openBox(BOX_ITEMS);
final box = Hive.box(BOX_ITEMS);
final items = box.get(0) as List<ItemModel>;
return items;
}
Future<void> setLocalItems(List<ItemModel> items) async {
await Hive.openBox(BOX_ITEMS);
final box = Hive.box(BOX_ITEMS);
box.put(0, items);
print('saved $items');
}
}
我在 pubspec.yaml
中使用的软件包版本
# hive (local data storage)
hive: ^1.4.4+1
dev_dependencies:
flutter_test:
sdk: flutter
# hive adapter generator
hive_generator: ^0.8.2
# build runner
build_runner:
当我升级Dart SDK 时,应用程序导致了同样的问题。当我降级 Dart SDK 后,Hive 开始按预期工作。解决方案是降级 Dart SDK。我当前的 SDK 是:
Dart SDK version: 2.14.2 (stable)
这对我有用
https://blog.logrocket.com/handling-local-data-persistence-flutter-hive/
出于某种原因,我认为模型没有处理 late 关键字?
欢迎在评论中指正我,我也想学习 :D
一切正常,直到我 重新启动 应用程序(关闭应用程序并打开它)并且看不到以前保存的数据,但是如果我检查框状态它已打开并且空的。我做错了什么吗?
- 运行 真机小米红米4A(实际出现问题 也在 Iphone 台设备上)
- 正在研究 Mac M1
- Flutter (Channel stable, 2.2.2, on macOS 11.2 20D64 darwin-arm, 语言环境 ru)
- 我在 github repo 中发现了“问题”,但没有任何用处
main.dart
void main() async {
// init hive
WidgetsFlutterBinding.ensureInitialized();
await lds.init();
// init app
runApp(MyApp());
}
配置单元初始化文件
Future<void> init() async {
final appDocumentDirectory = await path.getApplicationSupportDirectory();
Hive.init(appDocumentDirectory.path);
// registering entities
Hive.registerAdapter(ItemModelAdapter());
}
保存和加载功能
class ItemLocalDataSource {
static const String BOX_ITEMS = 'item-models';
Future<List<ItemModel>> getLocalItems() async {
await Hive.openBox(BOX_ITEMS);
final box = Hive.box(BOX_ITEMS);
final items = box.get(0) as List<ItemModel>;
return items;
}
Future<void> setLocalItems(List<ItemModel> items) async {
await Hive.openBox(BOX_ITEMS);
final box = Hive.box(BOX_ITEMS);
box.put(0, items);
print('saved $items');
}
}
我在 pubspec.yaml
中使用的软件包版本 # hive (local data storage)
hive: ^1.4.4+1
dev_dependencies:
flutter_test:
sdk: flutter
# hive adapter generator
hive_generator: ^0.8.2
# build runner
build_runner:
当我升级Dart SDK 时,应用程序导致了同样的问题。当我降级 Dart SDK 后,Hive 开始按预期工作。解决方案是降级 Dart SDK。我当前的 SDK 是:
Dart SDK version: 2.14.2 (stable)
这对我有用 https://blog.logrocket.com/handling-local-data-persistence-flutter-hive/
出于某种原因,我认为模型没有处理 late 关键字? 欢迎在评论中指正我,我也想学习 :D