我试图理解我的程序生成的以下异常。我有以下代码:
Map<ProjectName,String> userProjects = _ssClient.getUserAccessibleProjects();
ProjectIndexVM vm = new ProjectIndexVM(userProjects);
但是,当第二行执行时会生成异常:
Breaking on exception: type '_LinkedHashMap<ProjectName, String>' is not a subtype of type 'Map<ProjectName, String>' of 'projectNameToId'.
我的构造函数定义为:
class ProjectIndexVM {
final Map<ProjectName,String> projectNameToId;
ProjectIndexVM(this.projectNameToId);
}
我不明白这个错误的原因。这个变电站对我来说似乎是安全的。请指教。
使用所请求的详细信息进行更新
class ProjectName
{
final String Contents;
ProjectName(this.Contents)
{
if(this.Contents == null)
throw new ArgumentError("Contents may not be null");
}
}
Map<ProjectName,String> getUserAccessibleProjects()
{
...
Map<ProjectName,String> projects = new Map<ProjectName,String>();
for(var project in projectsList)
{
ProjectName projectName = new ProjectName(project["projectName"]);
String projectId = project["projectId"];
projects[projectName] = projectId;
}
return projects;
}
答案 0 :(得分:0)
确保项目或任何导入的软件包中没有其他名为ProjectName
或Map
的类(或上帝禁止,String
)。
不幸的是,当发生这种情况时,Dart有时会给出这个令人困惑的错误(或者过去常常使用)(参见this other question)。
如果这恰好是问题,这肯定是一个有价值的报告错误(has already been filed)。