如何解决在颤振中从 hive 检索数据时出错:List<dynamic>' 不是类型 'List<Character>' 的子类型
我正在尝试在 hive DB 中缓存 API 数据。我已经从 api 获取数据,然后尝试保存在数据库中。它已成功保存,但在获取数据时出现错误。我猜它不是在阅读子列表。这是数据类的代码
List<Character> characterFromJson(String str) =>
List<Character>.from(json.decode(str).map((x) => Character.fromJson(x)));
String characterToJson(List<Character> data) =>
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
@HiveType(typeId: 0)
class Character {
@HiveField(0)
String url;
@HiveField(1)
String name;
@HiveField(2)
String gender;
@HiveField(3)
String culture;
@HiveField(4)
String born;
@HiveField(5)
String died;
@HiveField(6)
List<String> titles;
@HiveField(7)
List<String> aliases;
@HiveField(8)
String father;
@HiveField(9)
String mother;
@HiveField(10)
String spouse;
@HiveField(11)
List<String> allegiances;
@HiveField(12)
List<String> books;
@HiveField(13)
List<String> povBooks;
@HiveField(14)
List<String> tvSeries;
@HiveField(15)
List<String> playedBy;
Character({
this.url,@required this.name,this.gender,this.culture,this.born,this.died,this.titles,this.aliases,this.father,this.mother,this.spouse,this.allegiances,this.books,this.povBooks,this.tvSeries,this.playedBy,});
List<Character> get storedCharacters {
final Box = Hive.Box('data');
var characters = Box.toMap().values.toList();
return characters;
}
解决方法
假设您的 Characters 类中有 .fromMap()
方法,请将其更改为此。
List<Character> get storedCharacters {
final box = Hive.box('data');
List<Character> characters = [];
for(var item in box.toMap().values){
characters.add(Character.fromMap(item));
}
return characters;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。