Flutter Dart报错:参数类型'void Function()'无法赋值给bool类型参数
错误原因
你自定义的SingleToDo组件第三个构造位置参数被声明为bool类型,你当前传入的() => deleteItem(key)是无返回值的回调函数,类型不匹配触发了该报错。
修复方案
- 首先核对
SingleToDo类的构造函数参数定义,确认各个位置参数的类型和顺序。当前你传入的4个参数分别是字符串类型的待办标题、布尔类型的完成状态、删除回调函数、状态切换回调函数,如果SingleToDo的参数顺序和你传入的不一致,调整传参顺序到匹配即可。 - 更推荐的写法是将
SingleToDo的构造参数改为命名参数,避免顺序混淆导致的类型错误,参考实现如下:
class SingleToDo extends StatelessWidget { // 定义四个需要传入的属性 final String todoTitle; final bool isDone; final VoidCallback onDelete; final VoidCallback onToggleDone; // 构造函数用命名参数明确参数用途 const SingleToDo({ super.key, required this.todoTitle, required this.isDone, required this.onDelete, required this.onToggleDone, }); // 其余SingleToDo实现代码 }
修改后你可以按命名参数传入对应值,不会出现顺序错位的问题:
return SingleToDo( todoTitle: key, isDone: products[key]!, onDelete: () => deleteItem(key), onToggleDone: () => toggleDone(key), );
内容的提问来源于stack exchange,提问作者Ilgrandechaval
相关产品推荐
相关产品推荐

