Flutter hive第一次加载初值问题

Flutter hive first load initial value problem

我有这些错误,我不知道是什么问题, 它是新创建的配置单元数据,还不包含任何值。 我正在尝试加载它,如果 value = null return defaultValue

这是配置单元加载的代码:

hiveOperation() async {
  GlobalPosition globalPosition;
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();

  await Hive.openBox('box');
  Hive.registerAdapter(GlobalPositionAdapter());
  globalPosition = box.get('globalPosition');
  lat = globalPosition.latitude;
  lon = globalPosition.longitude;
}

这是配置单元构造函数:

import 'package:hive/hive.dart';

part 'storage.g.dart';

@HiveType(typeId: 1)
class GlobalPosition {
  GlobalPosition({required this.latitude, required this.longitude});
  @HiveField(0, defaultValue: 1.0)
  double latitude;

  @HiveField(1, defaultValue: 1.0)
  double longitude;
}

加载时的错误是: [错误:flutter/lib/ui/ui_dart_state.cc(209)] 未处理的异常:类型 'Null' 不是类型 'GlobalPosition'

的子类型

我不知道怎么解决,请帮帮我,谢谢!

您应该在 get 方法中使用 defaultValue

  globalPosition = box.get('globalPosition',defaultValue: GlobalPosition(latitude:1.0 ,longitude:1.0);