在Flutter中从CheckboxListTile中删除数组值

时间:2020-08-31 09:09:57

标签: flutter checkbox

我正在尝试列出CheckboxListTile。我正在获取检查值的数组。我正在添加所有选中的值数组,并将它们设置为文本列表,但是问题是当取消选中时,我无法删除该值。我尝试如下:

我从checkBox获取checkValue的函数:

  onChecked(var items) {
    setState(() {
      myItems.addAll(items);
    });

    for (var i = 0; i < myItems.length; i++) {
      bool repeated = false;
      for (var j = 0; j < nonRepated.length; j++) {
        if (myItems[i] == nonRepated[j]) {
          repeated = true;
        }
      }
      if (!repeated) {
        nonRepated.add(myItems[i]);
      }
    }
    print(nonRepated);
  }

我将文本中的值设置如下:

  for (int i = 0; i < nonRepated.length; i++) Text(nonRepated[i])

我已经通过了如下功能:

 CheckboxWidget(cropsProduce[i].items[i].items[i].data,onChecked)
                                

我的复选框列表

  ListView(
        shrinkWrap: true,
        physics: const NeverScrollableScrollPhysics(),
        children: widget.values.keys.map((String key) {
          return new CheckboxListTile(
            title: new Text(key),
            value: widget.values[key],
            activeColor: Theme.of(context).primaryColor,
            checkColor: Colors.white,
            onChanged: (bool value) {
              setState(() {
                widget.values[key] = value;
              });
              setValues(widget.values[key]);
            },
          );
        }).toList(),
      );

     void setValues(bool myValue) {
    widget.values.forEach((key, myValue) {
      if (myValue == true) {
        if (tmpArray.contains(key) != widget.values.containsKey(key))
          tmpArray.add(key);

        widget._onChecked(allValues);
      } else if (myValue == false) {
        print("Else false");
        print(myValue);
        tmpArray.remove(key);

        widget._onChecked(allValues);
      }
    });
  }

0 个答案:

没有答案