Dart analyzer报argument_type_not_assignable错误,TrackPoint类识别异常咨询
问题根源
这是文件名大小写不一致导致的问题。Dart语言本身大小写敏感,若你的开发环境使用区分大小写的文件系统(如Linux/macOS),trackpoint.dart和trackPoint.dart会被视为两个独立文件,各自定义的TrackPoint类会被Dart analyzer判定为完全不同的类型,从而抛出argument_type_not_assignable错误。
从错误提示里能直接看到证据:
The argument type 'TrackPoint (where TrackPoint is defined in ...lib\trackpoint.dart)' can't be assigned to the parameter type 'TrackPoint (where TrackPoint is defined in ...lib\trackPoint.dart)'.
解决方案
统一文件名大小写
将项目中涉及的文件名改为完全一致,比如统一使用trackpoint.dart或trackPoint.dart,确保所有相关文件的命名大小写无差异。修正所有导入语句
检查项目中所有导入TrackPoint的代码,确保导入路径的文件名和统一后的实际文件名完全匹配。例如统一为trackpoint.dart后,所有导入都要写成:import 'trackpoint.dart' show TrackPoint;清理缓存并重启分析器
执行dart pub cache clean清理Dart缓存,或者在IDE中重启Dart分析服务,避免旧的文件缓存干扰类型检查。
补充说明
你提到去掉参数类型声明(使用动态类型)能临时解决问题,这是因为动态类型会跳过Dart的静态类型检查,但这属于治标不治本的做法,统一文件名才能从根源解决类型不匹配的问题。
内容的提问来源于stack exchange,提问作者Stefan Brinkmann

