首页 > 解决方案 > 应用程序重新启动后无法从 Hive 检索数据

问题描述

一切正常,直到我重新启动应用程序(关闭应用程序并打开它)并且看不到以前保存的数据,但如果我选中框状态,它已打开并为空。难道我做错了什么?

主要.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:

标签: flutterflutter-hive

解决方案


当我升级 Dart SDK 时,应用程序引起了同样的问题。当我降级 Dart SDK 时,Hive 开始按预期工作。解决方案是降级 Dart SDK。我当前的 SDK 是:

Dart SDK version: 2.14.2 (stable) 

推荐阅读