这是我的代码 并且在fluttre更新到2.13版本之后出现错误,所以请帮助.... 错误发生在 TaskCheckBox 类的 onchanged 方法上 and dart analys return 不能将参数类型“Function”分配给参数类型“void Function(bool?)?”。
class TaskTile extends StatefulWidget {
@override
_TaskTileState createState() => _TaskTileState();
}
class _TaskTileState extends State<TaskTile> {
bool isChecked = false;
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(
'This is task.',
style: TextStyle(
decoration: isChecked ? TextDecoration.lineThrough : null,
),
),
trailing: TaskCheckBox(checkboxState: isChecked,toggleCheckboxState: (bool checkboxState) {
setState(() {
isChecked = checkboxState;
});
}),
);
}
}
class TaskCheckBox extends StatelessWidget {
final bool checkboxState;
final Function toggleCheckboxState;
TaskCheckBox({required this.checkboxState,required this.toggleCheckboxState});
@override
Widget build(BuildContext context) {
return Checkbox(
activeColor: Colors.lightBlueAccent,
value: checkboxState,
onChanged: toggleCheckboxState,
);
}
}
答案 0 :(得分:0)
您正在发送一个期望接收布尔值的函数,但在 TaskCheckBox 中您正在接收一个普通函数 复选框也期望接收相同的类型,一个带有 bool 值的函数
改成这个
final Function(bool) toggleCheckboxState;
最终结果
class TaskCheckBox extends StatelessWidget {
final bool checkboxState;
final Function(bool) toggleCheckboxState;
TaskCheckBox({
@required this.checkboxState,
@required this.toggleCheckboxState,
});
答案 1 :(得分:0)
我在另一篇帖子中回答了这个问题 error: The argument type 'void Function(bool)' can't be assigned to the parameter type 'void Function(bool?)'
我将 checkboxCallback
方法更新为:
void checkBoxCallBack(bool? checkBoxState) {
if (checkBoxState != null) {
setState(() {
isChecked = checkBoxState;
});
}
}
和 onChanged:
的 Checkbox
属性:
onChanged: toggleCheckboxState as void Function(bool?)?,
它消除了错误。
答案 2 :(得分:0)
我遇到了同样的错误,然后我将 theowl-0011 的答案与 p2kr 结合起来解决了这个问题 请检查我的方法。它有效...
只需将 toggleCheckBox:
更改为:
(bool? checkBoxState) {
if (checkBoxState != null) {
setState(() {
isChecked = checkBoxState;
});
}
然后final Function toggleCheckbox;
:
final Function(bool?) toggleCheckbox;