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);
我有这些错误,我不知道是什么问题, 它是新创建的配置单元数据,还不包含任何值。 我正在尝试加载它,如果 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);