提问人:zeifi 提问时间:4/30/2021 最后编辑:leftjoinzeifi 更新时间:5/2/2021 访问量:989
在 flutter 中从 hive 检索数据时出错:List<dynamic> 不是“List<Character> 类型的子类型
Error retrieving data from hive in flutter : List<dynamic>' is not a subtype of type '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;
}
答:
3赞
Huthaifa Muayyad
4/30/2021
#1
将其更改为 this,假设 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;
}
评论