一次检查所有ListView复选框

时间:2019-07-17 08:55:35

标签: flutter dart flutter-layout

我有这个ListView.builder和简单的Cards,它是用bloc构建的,就像这样:

   return ListView.builder(
                  itemCount: snapshot.data.documents.length,
                  itemBuilder: (BuildContext context, int index) {

                    var snap = snapshot.data.documents[index];
...

在此列表中,我有checkbox像这样:

class _MyHomePageState extends State<MyHomePage> {

    bool _isChacked = false;

...

Card(
                                    elevation: 10.0,
                                    child: Container(
                                      width: 60.0,
                                      height: 50.0,
                                      child: Checkbox(
                                        activeColor: Colors.red,
                                          value: _isChacked,
                                          onChanged: (value) {
                                            setState(() {
                                              _isChacked = value;
                                              print(value);
                                            });
                                          },
                                      ),
                                    ),
                                  ),

如果我单击我会看到复选框,以更改价值,但不幸的是,一次如何定位自己的每个人?

我想到了ListMap,但我不知道如何使用它。

保持复选框的状态也不重要,因为将值保存到我知道的数据库中,但是我只是在本地需要它。

1 个答案:

答案 0 :(得分:0)

因为所有复选框都取决于_isChacked值。如果只希望复选框可以切换,则应使用

`List _selected_box = List();     ...

child: Checkbox(
         activeColor: Colors.red,
         value: _selected_box.contains(index),//index is the position of the checkbox
         onChanged: (value) {
              setState(() {
                  // remove or add index to _selected_box
                  if(_selected_box.contains(index)) _selected_box.remove(value);
                  else _selected_box.add(value); 
                  print(value);
              });
         },
         ),