问题是标题。我正在尝试构建 todoye 应用程序,正如您所看到的,回调被认为是 ValueChanged<bool?> 不是一个简单的函数,因此我无法将我的逻辑移动到另一个 statefullwidget 以减少我的应用程序中的重建我尝试了不同的事情,但我得到了错误总是请帮助。这是我的代码:
import 'package:flutter/material.dart';
class TaskTile extends StatefulWidget {
@override
_TaskTileState createState() => _TaskTileState();
}
class _TaskTileState extends State<TaskTile> {
bool isChecked = false;
void checkBoxCallBack(bool checkBoxState) {
setState(() {
isChecked = checkBoxState;
});
}
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(
'finish up angla\'s course today',
style: TextStyle(
decoration: isChecked ? TextDecoration.lineThrough : null,
),
),
trailing: TaskCheckBox(
checkBoxState: isChecked,
toggleCheckBoxState: checkBoxCallBack,
),
);
}
}
class TaskCheckBox extends StatelessWidget {
final bool checkBoxState;
final ValueChanged<bool?> toggleCheckBoxState;
const TaskCheckBox({
required this.checkBoxState,
required this.toggleCheckBoxState,
});
@override
Widget build(BuildContext context) {
return Checkbox(
activeColor: Colors.lime,
value: checkBoxState,
onChanged: toggleCheckBoxState,
);
}
}
错误在第 27 行......我想将我的自定义函数传递给我的 statelessWidget 的变量。
发生这种情况是因为您已经声明了toggleCheckBoxState
as final ValueChanged<bool?> toggleCheckBoxState;
,并且bool
数据类型与bool?
数据类型不同。bool?
是可空的布尔类型。要修复它,请将方法更改checkBoxCallback
为以下内容
void checkBoxCallBack(bool? checkBoxState) {
if (checkBoxState != null) {
setState(() {
isChecked = checkBoxState;
});
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句