【问题标题】:The argument type 'Function' can't be assigned to the parameter type 'void Function(bool?)参数类型“Function”不能分配给参数类型“void Function(bool?)
【发布时间】:2021-12-31 12:05:15
【问题描述】:

当我在制作应用程序时发生错误说-参数类型'Function'不能分配给参数类型'void Function(bool?)?'。 onChanged : toggleCheckState 的 Taskcheckbox 无状态小部件内部表示无法分配函数 toggleCheckboxState。

class task_tile extends StatefulWidget {
  @override
  State<task_tile> createState() => _task_tileState();

}

class _task_tileState extends State<task_tile> {
  bool ischanged = false;

  @override
  Widget build(BuildContext context) {
    return ListTile(
      title: Text("This is a box",style: TextStyle(
          decoration: ischanged ? TextDecoration.lineThrough:null
      ),
      ),
      trailing: Taskcheckbox(ischanged,(bool checkboxState) {
        setState(() {
          ischanged = checkboxState;
        });
      }),
    );
  }
}

class Taskcheckbox extends StatelessWidget {

final bool checkboxState;
final  Function toggleCheckboxState;

Taskcheckbox(this.checkboxState,this.toggleCheckboxState);
  @override
  Widget build(BuildContext context) {
    return Checkbox(
      activeColor: Colors.lightBlueAccent,
      value: checkboxState,
      onChanged:toggleCheckboxState,
    );
      }
  }

【问题讨论】:

标签: flutter dart flutter-layout flutter-dependencies


【解决方案1】:

你需要改变你的函数类型来解决这个问题

来自

final Function toggleCheckboxState;

到

final ValueChanged<bool?> toggleCheckboxState;

【讨论】:

  • 当我用 ValueChanged 替换它时,新错误到达尾随:Taskcheckbox(ischanged,(bool checkboxState) { setState(() { ischanged = checkboxState; }); }),参数类型'void Function (bool)' 不能分配给参数类型 'void Function(dynamic)'。
  • 等我查一下
  • 好的,只需从 (bool checkboxState) 中删除 bool 并只保留它 (checkboxState)
  • 支持并标记为已回答,谢谢
  • 谢谢兄弟
【解决方案2】:

你用这个

final  Function toggleCheckboxState;

到

final Function(Object?) toggleCheckboxState;

【讨论】:

  • 工作但在尾随出现错误:Taskcheckbox(ischanged,(bool checkboxState) { setState(() { ischanged = checkboxState; }); }),参数类型 'void Function(bool)' 可以'不被分配给参数类型'void Function(dynamic)'。
【解决方案3】:

请参考以下代码更改

@override
  Widget build(BuildContext context) {
    return Checkbox(
      activeColor: Colors.lightBlueAccent,
      value: checkboxState,
      onChanged: (bool val) {
        toggleCheckboxState();
      },
    );
  }

【讨论】:

  • 参数类型'void Function(bool)'不能赋值给参数类型'void Function(bool?)?'。
猜你喜欢
  • 2022-01-17
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 2023-04-05
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
相关资源
最近更新 更多