如何解决类型 '_InternalLinkedHashMap<dynamic, dynamic>' 不是类型 'Map<dynamic, TOTPModel>' 的子类型 'kvPairs'
我正在尝试找出 Flutter 中的 Hive 包。但是,它显示了一个错误。
错误说:“类型'_InternalLinkedHashMap
我正在使用带有 BLoC 模式的 Hive 包。
应用程序如下所示:
代码:
manual_input_bloc.dart
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:dart_otp/dart_otp.dart';
import 'package:duckie/models/totp/totp_model.dart';
import 'package:hive/hive.dart';
import 'package:Meta/Meta.dart';
part 'manual_input_event.dart';
part 'manual_input_state.dart';
class ManualInputBloc extends Bloc<ManualInputEvent,ManualInputState> {
ManualInputBloc() : super(ManualInputinitial());
@override
Stream<ManualInputState> mapEventToState(
ManualInputEvent event,) async* {
Box Box = await Hive.openBox<TOTPModel>('totpmodel');
if (event is GetFormTextEvent) {
if (event.secretKey == null ||
event.issuer == null ||
event.accountName == null) {
yield ManualInputError(
'all-fields-error-title','all-fields-error-content');
} else {
try {
final TOTP totp = TOTP(
secret: event.secretKey,digits: int.parse(event.numberOfDigits),interval: int.parse(event.timestep),);
final String otp = totp.Now();
Box.putAll({
'otp': otp,'issuer': event.issuer,'accountName': event.accountName
});
print(Box.get('totpmodel'));
yield ManualInputFinal(
otp,event.issuer,event.accountName,);
} catch (error) {
yield ManualInputError('totp-fail-title','totp-fail-content');
print(error.toString());
}
}
}
}
}
totp_model.dart
import 'package:hive/hive.dart';
part 'totp_model.g.dart';
@HiveType(typeId: 0)
class TOTPModel {
@HiveField(0)
String otp;
@HiveField(1)
String issuer;
@HiveField(2)
String accountName;
TOTPModel(this.otp,this.issuer,this.accountName);
}
totp_model.g.dart
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'totp_model.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class TOTPModelAdapter extends TypeAdapter<TOTPModel> {
@override
final int typeId = 0;
@override
TOTPModel read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int,dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),};
return TOTPModel(
fields[0] as String,fields[1] as String,fields[2] as String,);
}
@override
void write(BinaryWriter writer,TOTPModel obj) {
writer
..writeByte(3)
..writeByte(0)
..write(obj.otp)
..writeByte(1)
..write(obj.issuer)
..writeByte(2)
..write(obj.accountName);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this,other) ||
other is TOTPModelAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。