Hive registerAdapter 不接受 id
Hive registerAdapter not accepting id
我做了一个class
import 'package:hive/hive.dart';
part 'CLASStrips.g.dart';
@HiveType()
class Trips{
@HiveField(0)
String tripName;
@HiveField(1)
var date;
}
并创建了它的适配器
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'CLASStrips.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class TripsAdapter extends TypeAdapter<Trips> {
@override
Trips read(BinaryReader reader) {
var numOfFields = reader.readByte();
var fields = <int, dynamic>{
for (var i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Trips()
..tripName = fields[0] as String
..date = fields[1] as dynamic;
}
@override
void write(BinaryWriter writer, Trips obj) {
writer
..writeByte(2)
..writeByte(0)
..write(obj.tripName)
..writeByte(1)
..write(obj.date);
}
}
在主要功能中,我尝试打开盒子并注册适配器
void main() async{
WidgetsFlutterBinding.ensureInitialized();
final appDocumentDir = await path_provider.getApplicationDocumentsDirectory();
Hive.init(appDocumentDir.path);
final tripsBox = await Hive.openBox('tripsBox');
Hive.registerAdapter(TripsAdapter(),33);
runApp(MyHomePage());
}
但是 registerAdapter 函数正在给出消息
Too many positional arguments: 1 expected, but 2 found.
Try removing the extra arguments.
我该如何解决?
import 'package:hive/hive.dart';
part 'CLASStrips.g.dart';
@HiveType()
class Trips{
@HiveField(0)
String tripName;
@HiveField(1)
var date;
Hive 类型 id 应添加到 @HiveType()。
像这样。
@HiveType(TypeId: 33)
您不再需要在注册适配器时添加它。
我做了一个class
import 'package:hive/hive.dart';
part 'CLASStrips.g.dart';
@HiveType()
class Trips{
@HiveField(0)
String tripName;
@HiveField(1)
var date;
}
并创建了它的适配器
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'CLASStrips.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class TripsAdapter extends TypeAdapter<Trips> {
@override
Trips read(BinaryReader reader) {
var numOfFields = reader.readByte();
var fields = <int, dynamic>{
for (var i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Trips()
..tripName = fields[0] as String
..date = fields[1] as dynamic;
}
@override
void write(BinaryWriter writer, Trips obj) {
writer
..writeByte(2)
..writeByte(0)
..write(obj.tripName)
..writeByte(1)
..write(obj.date);
}
}
在主要功能中,我尝试打开盒子并注册适配器
void main() async{
WidgetsFlutterBinding.ensureInitialized();
final appDocumentDir = await path_provider.getApplicationDocumentsDirectory();
Hive.init(appDocumentDir.path);
final tripsBox = await Hive.openBox('tripsBox');
Hive.registerAdapter(TripsAdapter(),33);
runApp(MyHomePage());
}
但是 registerAdapter 函数正在给出消息
Too many positional arguments: 1 expected, but 2 found.
Try removing the extra arguments.
我该如何解决?
import 'package:hive/hive.dart';
part 'CLASStrips.g.dart';
@HiveType()
class Trips{
@HiveField(0)
String tripName;
@HiveField(1)
var date;
Hive 类型 id 应添加到 @HiveType()。
像这样。
@HiveType(TypeId: 33)
您不再需要在注册适配器时添加它。