Flutter运行出现List<Todo>与List<Todo>类型不匹配报错如何解决
问题根因
该报错是Dart类型系统的路径识别机制导致的:即使两个类的代码完全一致,只要导入路径的解析结果不同,就会被判定为完全独立的类型。你给出的报错信息已经明确标注了冲突来源:两个同名Todo类分别来自package:todoapp/view/main_page.dart和package:todoapp/dto/todo.dart。
你把Todo类移动到Widget所在文件后运行正常,就是因为同文件内不需要跨文件导入,不存在路径识别差异,类型判定自然一致。
触发原因
通常有两种情况会导致这个问题:
- 你在
main_page.dart中不小心重复定义了同名Todo类,和dto/todo.dart中的类产生了冲突 - 不同文件导入
Todo类时混用了相对路径和包绝对路径,Dart会将两种路径导入的同一类识别为不同类型
解决方案
- 首先排查
main_page.dart的代码,删除重复定义的Todo类,全局只保留dto/todo.dart中的唯一Todo类定义 - 统一所有用到
Todo类的文件的导入规则,全部使用包绝对路径导入,不要混用相对路径,示例写法:
import 'package:todoapp/dto/todo.dart';
- 修改完成后执行
flutter clean清理编译缓存,再重新运行项目即可解决问题
内容的提问来源于stack exchange,提问作者Vasiliy Bohdanets
相关产品推荐
相关产品推荐

