Flutter:如何获取复选框的值并将其放入变量

时间:2019-11-26 15:47:52

标签: flutter dart

我目前陷入混乱中。

因此,我有一个复选框,我希望每次单击该复选框时,该复选框的值都将保存在数组变量中,如果再次单击它,则该值将在数组变量中删除,因此我可以调用该数组变量并将其保存在数据库中。

这是我到目前为止所拥有的。

我的代码:

Map<String, bool> values = {
'Food': false,
'Materials': false,
};

Widget build(BuildContext context) {
return Scaffold(
  appBar: new AppBar(title: new Text('CheckboxListTile demo')),
  body:  new ListView(
    children: values.keys.map((String key) {
      return new CheckboxListTile(
        title: new Text(key),
        value: values[key],
        onChanged: (bool value) {
          setState(() {
            values[key] = value;
          });
          print(key);
         },
       );
      }).toList(),
     ),
   );
  }
 }

我的用户界面:

enter image description here

1 个答案:

答案 0 :(得分:1)

要将键和值保存在列表中, 声明标题和值的模型类,

class MyClass {
  String title;
  bool value;
  MyClass(this.title, this.value);
  @override
  String toString() {
    return 'MyClass{title: $title, value: $value}';
  }
}

现在用MyClass声明一个列表,

List<MyClass> selecteditems = List();

现在添加这样的数据,

              setState(() {
                values[key] = value;
                selecteditems.clear();
                values.forEach((key, value) {
                  print('${key}: ${value}');
                  if (value) {
                    selecteditems.add(MyClass(key, value));
                  }
                });
              });

要检查selected内的输出打印build method

  @override
  Widget build(BuildContext context) {
    print(selecteditems.toString());

输出1:已选择1个项目

[MyClass {title:食物,值:true}]

enter image description here

输出2:所有选定项

[MyClass {title:食物,值:true},MyClass {title:材料,值:true}]

enter image description here

输出2:所有未选中的项目'

什么都不会打印