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)

您不再需要在注册适配器时添加它。