要创建 Gepoint Adapter,您需要有一个可以适应的模型。我不确定您如何处理存储在该地理点中的数据,我想我会以某种方式简单地解析数据。所以我假设这个模型:
import 'package:hive/hive.dart';
part 'location.g.dart';
@HiveType(typeId: 0)
class Location {
@HiveField(0)
String geohash;
@HiveField(1)
GeoPoint geoPoint;
@HiveField(2)
String locationPreviewURL;
}
注意部分'location.g.dart';. 生成器最终将使用它来创建适配器。
为包含 Hive 可以处理的类型的 GeoPoint 创建一个模型,因此我假设您的值的地理数据部分现在是一个字符串。您需要决定如何处理该类型的值。我现在将专注于适配器部分。
import 'package:hive/hive.dart';
part 'geopoint.g.dart';
@HiveType(typeId: 1)
class GeoPoint {
@HiveField(0)
String geodata;
}
有了它,去你的终端并运行
flutter packages pub run build_runner build
创建适配器。请注意,当您更改 HiveModels 时,您需要重新创建它们。你应该使用
flutter packages pub run build_runner build --delete-conflicting-outputs
为了那个原因。
最后,您需要注册您的适配器,以便 Hive 可以使用它们。所以在打开任何盒子之前,通常是在初始化应用程序调用时
Hive.registerAdapter(LocationAdapter());
Hive.registerAdapter(GeoPointAdapter());