如何在带有颤振索引的默认Listview Builder中选择单个复选框

时间:2019-12-11 07:49:17

标签: database firebase listview flutter checkbox

Checkbox(
  checkColor: Colors.red,
  activeColor: Colors.white,
  onChanged: (bool value) {
    dataOfArray.add(arrayOfId);
    var n = dataOfArray.indexOf(arrayOfId);
    print("data$n ---OfArray${dataOfArray}---${[arrayOfId]}");
    setState(() {
      //                        if (_checkboxval) {
      //   setState(() {
      //     _checkboxval = false;
      //   });
      // }else {
      //   setState(() {
      //     _checkboxval = true;
      //   });
      // }
      if (
          //dataOfArray[n]== arrayOfId
          dataOfArray.indexOf(arrayOfId) != -1) {
        this._checkboxval = value;
        print("dataOf///////////Array$dataOfArray");
      }
      // else this._checkboxval=value;
    });
  },
  //value: arrayOfId[''],
  value: this._checkboxval,
);

在这里,我尝试将单个check bocx选择到默认的listview构建器中。

但是它正在选中所有已创建列表视图构建器中的复选框。 如果您遇到此类错误,请提供帮助。

由于我使用Firebase在该特定列表中获取数据的动态列表视图,因此我给该数据提供了复选框,并在特定的复选框中选中了所有复选框。

1 个答案:

答案 0 :(得分:0)

您需要先创建一个对象列表,然后再将复选框状态更新为列表并更新状态。

  

例如:

PODO类:

class ObjectClass {
  int id;
  bool checkBoxStatus;

  Users({this.id, this.checkBoxStatus});

  Users.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    checkBoxStatus = json['check_box_status'];
  }
}

班级文件:

  

列出dataOfArray; //通过api初始化数据或   随便

Checkbox(
    checkColor: Colors.red,
    activeColor: Colors.white,
    onChanged: (bool value) {

    setState(() {
    dataOfArray[arrayOfId].checkBoxStatus = value;
    });
    },

    value: dataOfArray[arrayOfId].checkBoxStatus,
    )
  

可用的完整示例:   http://codesfor.in/flutter-listview-with-checkbox/

如果有任何疑问,可以询问。