0

每当我创建void函数时,不会调用无状态小部件的构建方法,因为也不会调用其他方法。请指导可能的解决方案。

    import 'package:flutter/material.dart';
class TaskTile extends StatefulWidget {
  @override
  _TaskTileState createState() => _TaskTileState();
}


class _TaskTileState extends State<TaskTile> {
  bool isChecked= true;

   void checkboxCallback (checkboxState){
    setState(() {
      isChecked=che ckboxState;
    });

  @override
  Widget build(BuildContext context) {
    return ListTile(
      title: Text('This is my task.',
        style: TextStyle(
        decoration: isChecked ? TextDecoration.lineThrough : null,
    ),),
      trailing: TaskCheckBox(isChecked,checkBoxCallback),
    );
  }
}

class TaskCheckBox extends StatelessWidget {

  final bool checkboxState;
  final Function toggleCheckBoxState;

  TaskCheckBox (this.checkboxState, this.toggleCheckBoxState);

  @override
  Widget build(BuildContext context) {
    return Checkbox(
      activeColor: Colors.blueAccent,
        value: checkboxState,
        onChanged:
        });
  }
}
4

2 回答 2

0

您可以尝试使用匿名函数调用该函数

Widget build(BuildContext context) {
    return Checkbox(
      activeColor: Colors.blueAccent,
        value: checkboxState,
        onChanged: ()=>toggleCheckBoxState()
        });   }

也代替

函数 toggleCheckBoxState

您可以使用

VoidCallback toggleCheckBoxState

用于定义任何回调

于 2021-08-25T08:30:45.063 回答
0

您的 toggleCheckBoxState 变量必须是以下类型:

final ValueChanged<bool?> toggleCheckBoxState;

然后你可以说:

onChanged: toggleCheckBoxState,

然后你只需要弄清楚如果复选框有一个空值该怎么做,而你的代码现在没有。也许在您的 checkboxCallback 中找到一个默认值?

于 2021-08-25T08:21:36.447 回答