flutter - 应用程序重新启动后无法从 Hive 检索数据
问题描述
一切正常,直到我重新启动应用程序(关闭应用程序并打开它)并且看不到以前保存的数据,但如果我选中框状态,它已打开并为空。难道我做错了什么?
- 在真机上运行小米红米4A(实际上问题也出现在Iphone设备上)
- 在 Mac M1 上工作
- Flutter (Channel stable, 2.2.2, on macOS 11.2 20D64 darwin-arm, locale ru)
- 我在 github repo中发现了“问题”,但没有什么有用的
主要.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)
推荐阅读
- c++ - 如何从文件中读取特定字符(如“=”)之后的字符串?
- dropwizard - 是否有 Dropwizard 和 Keycloak 的有效 Oauth2 示例实现?
- json - JQ 从 JSON 文件中提取值并分配给变量
- excel - 使用按钮取消隐藏单元格行
- php - Laravel,“getimagesize(asda.jpg):无法打开流:没有这样的文件或目录”
- c# - 从日期列表中查找最小日期值
- node.js - Jest not showing errors that are thrown
- botframework - 如何创建处理来自应用程序的所有对话框的机器人对象的多个实例
- docker - 在 docker 内构建包后,纱线冻结
- excel - VBA复制链接到列中某个关键字的单元格