奇怪的运行时类型异常

时间:2014-05-21 19:43:49

标签: dart

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

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;
}

1 个答案:

答案 0 :(得分:0)

确保项目或任何导入的软件包中没有其他名为ProjectNameMap的类(或上帝禁止,String)。

不幸的是,当发生这种情况时,Dart有时会给出这个令人困惑的错误(或者过去常常使用)(参见this other question)。

如果这恰好是问题,这肯定是一个有价值的报告错误(has already been filed)。