首页 > 解决方案 > 如何将值动态传递到 Flutter 中的自定义复选框小部件

问题描述

所以我正在尝试为我正在构建的表单创建一个自定义复选框行,但我不想将代码复制超过 50 次(是/否问题的总数)

我尝试创建一个自定义复选框行小部件,借此我传入我想分配给复选框的布尔值(yesValue 和 noValue),但颤动只是不允许勾选复选框。

如果我删除传递给小部件的“yesValue”并硬编码该布尔值,它就可以工作。

我只想能够轻松地使用我的自定义复选框行,而不必一遍又一遍地编写几乎相同的东西。这是我的代码:

Widget _buildCheckboxRow(String text, String yesString, bool yesValue, String noString, bool noValue) {
return Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  children: <Widget>[
    Text(text, style: TextStyle(color: bluePurple),),
    Row(
      children: <Widget>[
        Text(
          'Yes',
        ),
        Checkbox(
            activeColor: bluePurple,
            value: yesValue,
            onChanged: (bool value) => setState(() {
              yesValue = value;
              if(!widget.edit) _databaseHelper.updateTemporaryTransferReportField({yesString : GlobalFunctions.boolToTinyInt(value)}, user.uid, widget.jobId);
              if (noValue == true){
                noValue = false;
                if(!widget.edit) _databaseHelper.updateTemporaryTransferReportField({noString : 0}, user.uid, widget.jobId);
              }
            })),
        Text(
          'No',
        ),
        Checkbox(
            activeColor: bluePurple,
            value: noValue,
            onChanged: (bool value) => setState(() {
              noValue = value;
              if(!widget.edit) _databaseHelper.updateTemporaryTransferReportField({noString : GlobalFunctions.boolToTinyInt(value)}, user.uid, widget.jobId);
              if (yesValue == true){
                yesValue = false;
                if(!widget.edit) _databaseHelper.updateTemporaryTransferReportField({yesString : 0}, user.uid, widget.jobId);
              }
            }))
      ],
    )
  ],
);

}

标签: flutterdart

解决方案


推荐阅读