我是一个新手,我尝试运行一个GitHub项目,但遇到了一个错误,比如类型ListDynamic不是类型ListInt的子类型。Github链接
误差线
List<int> genreIds;
MediaItem._internalFromJson(Map jsonMap, {MediaType type: MediaType.movie})
:
type = type,
id = jsonMap["id"].toInt(),
voteAverage = jsonMap["vote_average"].toDouble(),
title = jsonMap[(type == MediaType.movie ? "title" : "name")],
posterPath = jsonMap["poster_path"] ?? "",
backdropPath = jsonMap["backdrop_path"] ?? "",
overview = jsonMap["overview"],
releaseDate = jsonMap[(type == MediaType.movie
? "release_date"
: "first_air_date")],
genreIds = jsonMap["genre_ids"];//in this line
}
以上代码文件
如有任何帮助,我们将不胜感激,并提前向您表示感谢。
较短的处理方法是
genreIds = (jsonMap["genre_ids"] as List)?.map((e) => e as int)?.toList();
一个更优雅的方法也可以是初始化新列表,而不是强制转换。
var genreIdsFromJson = jsonMap['genre_ids'];
List<int> genreIdsList = new List<int>.from(genreIdsFromJson);
// then you can use gendreIdsList to the mapping function
// ...
gendreIds = genreIdsList
...
更新:根据文件
"所有元素都应该是E的实例。可迭代的元素本身可能具有任何元素类型,因此可以使用此构造函数向下转换List,例如:
List<SuperType> superList = ...;
List<SubType> subList =
new List<SubType>.from(superList.whereType<SubType>());
当可增长为true时,此构造函数创建可增长列表;否则,它将返回一个固定长度的列表``
更新:为什么初始化比强制转换更好?(赞成/反对)
显式转换:这个过程通常与信息丢失或类型之间转换失败有关
创建新的不可变元素比铸造要好。在编译时揭示与类型相关的错误,更可读的代码,更可维护的代码,更好的提前(AOT)编译。
i、 最好尝试解析或使用预定义的方法解析一个值,因为如果类型不匹配,该值将为null。另一方面,显式强制转换对象或值可能在运行时抛出错误。
改变
genreIds = jsonMap["genre_ids"];
到
genreIds = jsonMap["genre_ids"].cast<int>();
JSON映射或列表中的类型没有具体的泛型类型genreIds
需要一个列表
如果您之前没有看到同一代码出现此错误,那么可能是因为您升级到了Dart版本,其中
--preview-Dart-2
成为默认版本(以前是opt-in)
我从Firestore示例中复制了一段代码: 但是我得到了这个错误 这里出了什么问题?
我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模
我是个新手。当我运行代码时,我得到一个错误:“Future”类型不是“List”类型的子类型。如果我改变屏幕,我将得到错误:NoSuchMethodError:方法“map”被调用为null。我怎样才能解决它?谢谢你帮助我。
我正在学习飞镖和颤振。现在,我尝试将JSON作为一种持久性方法。我犯了很多错误,都是关于类型和内容的。这是我遇到的最新错误:
我正在解码一个响应体,我得到了错误: 我正在解析JSON对象的JSON数组,其中一个字段也是对象列表,我怀疑我的问题源于此。我也在使用json_serializable库。下面是我的代码,我省略了一些字段,更改了一些变量名称,但它代表相同的代码: 从。json_serializable生成的g dart文件(将编码部分复制): 这是我未来的职能:
当我运行我的代码时,它返回了错误:类型“Future”不是类型转换中“List”类型的子类型。我该如何修复它?它是在我从Firebase获取数据之前匹配引擎运行的?我试图将wait添加到List demoProfiles=getdata()作为wait List;但它返回错误。我真的是新手,这个问题已经困扰了我一整天。请帮帮我