Dart 奇怪的运行时类型异常

Dart 奇怪的运行时类型异常,dart,Dart,我试图理解以下由我的程序生成的异常。我有以下代码: Map userProjects=\u ssClient.getUserAccessibleProjects(); ProjectIndexVM vm=新的ProjectIndexVM(用户项目); 但是,当第2行执行时,会生成异常: 异常中断:类型“\u LinkedHashMap”不是“projectNameToId”的“Map”类型的子类型。 我的构造函数定义为: 类ProjectIndexVM{ 最终地图项目名称ID; Projec

我试图理解以下由我的程序生成的异常。我有以下代码:

Map userProjects=\u ssClient.getUserAccessibleProjects();
ProjectIndexVM vm=新的ProjectIndexVM(用户项目);
但是,当第2行执行时,会生成异常:

异常中断:类型“\u LinkedHashMap”不是“projectNameToId”的“Map”类型的子类型。
我的构造函数定义为:

类ProjectIndexVM{
最终地图项目名称ID;
ProjectIndexVM(this.projectNameToId);
}
我不明白这个错误的原因。我觉得这个变电站很安全。请告知

使用请求的详细信息更新

class项目名称
{
最终字符串内容;
项目名称(this.Contents)
{
if(this.Contents==null)
抛出新ArgumentError(“内容不能为空”);
}
}
映射getUserAccessibleProjects()
{
...
地图项目=新地图();
for(项目列表中的var项目)
{
ProjectName ProjectName=新项目名称(项目[“ProjectName”]);
字符串projectId=project[“projectId”];
projects[projectName]=projectId;
}
返回项目;
}

确保在您的项目或任何导入的包中没有其他名为
ProjectName
Map
(或者,上帝禁止,
String
)的类

不幸的是,在这种情况下,Dart有时会出现这种令人困惑的错误(或者已经习惯了)(请参阅)


如果这恰好是一个问题,那么这肯定是一个值得报告的bug(这是一个错误)

我的直接想法是,这是编译器中的一个bug——除非出于某种原因在导入中有两个不同的类,分别命名为ProjectName、String或Map。尝试在以下位置提交错误报告:
ProjectName
\u ssClient.getUserAccessibleProjects()
?@Dejas-Hmm,我无法用发布的代码复制此代码。它对我来说运行良好,不会抛出任何异常。尝试将发布的代码复制到新项目,并继续从现有项目添加代码,直到出现异常。然后,您可以编辑您的问题以添加有问题的代码。