如何添加列表<;字符串>;要检查BoxListTile值?

如何添加列表<;字符串>;要检查BoxListTile值?,list,flutter,widget,checkboxlist,List,Flutter,Widget,Checkboxlist,在这个例子中,我试图将保存在列表中的值添加到CheckboxListTile。 但是由于某种原因,我被困在这里,我想不出如何解决这个问题 全球列表 List<String> _lstNomeData = new List<String>(); 身体 body: Column( children: <Widget>[ Expanded( child: L

在这个例子中,我试图将保存在列表中的值添加到CheckboxListTile。 但是由于某种原因,我被困在这里,我想不出如何解决这个问题

全球列表

List<String> _lstNomeData = new List<String>();
身体

body: Column(
                children: <Widget>[
                  Expanded(
                    child: ListView(
                      children: values.keys.map((String key) {
                        return new CheckboxListTile(
                          title: new Text(key),
                          value: values[key],
                          activeColor: Colors.blue,
                          checkColor: Colors.white,
                          onChanged: (bool value) {
                            setState(() {
                              values[key] = value;
                            });
                          },
                        );
                      }).toList(),
                    ),
                  ),
                ],
              )
body:Column(
儿童:[
扩大(
子:ListView(
子项:values.keys.map((字符串键){
返回新的CheckboxListTile(
标题:新文本(关键),
值:值[键],
activeColor:Colors.blue,
checkColor:Colors.white,
一旦更改:(布尔值){
设置状态(){
值[键]=值;
});
},
);
}).toList(),
),
),
],
)
错误

你走在正确的轨道上。您可以在这里做两件事:

  • 为每个键(您正在尝试执行的操作)在地图中预先填充
    false
  • 假设地图没有键,则答案为
    false
    (默认)
  • 第二种方法可能更好,因为通过使用
    false
    预先填充映射,您无法区分用户实际回答的
    false
    与默认设置的
    false。如果地图上没有钥匙,您就知道用户到目前为止还没有回答问题。我将展示如何使用第二种方法:

    保持您的全球列表不变:

    列表lstNomeData=[];
    
    使用空地图初始化地图(代表用户对每个问题的答案):

    Map-answers={};
    
    现在,请在您的
    复选框中正确引用这些答案,并使用
    onChanged
    属性:

    ListView(
    子项:lstNomeData.map((键)=>
    CheckboxListTile(
    标题:文本(键),
    //在这里,我们检查答案映射是否有此键,如果有,则使用bool值,否则将其设置为false(用户迄今尚未回答此问题)
    值:回答[键]??错误,
    activeColor:Colors.blue,
    checkColor:Colors.white,
    一旦更改:(答案)=>
    设置状态(()=>答案[键]=答案)
    ),
    ).toList(),
    ),
    
      var tmpArray = [];
    
      getCheckboxItems() {
        values.forEach((key, value) {
          if (value == true) {
            tmpArray.add(key);
          }
        });
    
        print(tmpArray);
        tmpArray.clear();
      }
    
    body: Column(
                    children: <Widget>[
                      Expanded(
                        child: ListView(
                          children: values.keys.map((String key) {
                            return new CheckboxListTile(
                              title: new Text(key),
                              value: values[key],
                              activeColor: Colors.blue,
                              checkColor: Colors.white,
                              onChanged: (bool value) {
                                setState(() {
                                  values[key] = value;
                                });
                              },
                            );
                          }).toList(),
                        ),
                      ),
                    ],
                  )