繁体   English   中英

动态和有条件地将小部件添加到列表中 flutter

[英]Add the widgets to the list dynamically and conditionally flutter

我正在尝试添加从复选框列表中选择的项目的小部件。 我正在检查项目列表,但无法有条件地添加小部件。 我已经实现如下:

复选框列表项

responseData = [
  MachinesData(0, "गाई", false),
  MachinesData(1, "भैंसी    ", false),
  MachinesData(2, " चौरी/याक    ", false),
  MachinesData(3, "गोरु/राँगा   ", false),
  MachinesData(4, "भेँडा/बाख्रा/च्याङ्ग्रा ", false),
  MachinesData(5, "बङ्गुर/ सुङ्गुर/ बँदेल", false),
  MachinesData(6, "कुखुरा ", false),
  MachinesData(7, "अन्य पन्छीहरु  ", false),
  MachinesData(8, "मत्स्य  ", false),
  MachinesData(9, "घाँसबाली   ", false),
  MachinesData(10, "अन्य (पशुपन्छी तथा मत्स्य)    ", false),
];

当从对话框中选择这些项目列表时,我在 main class 中得到索引、名称和 checkedValues 的列表,如下所示:

onChecked(var value, int i, String name) {
setState(() {
  if (responseData[i].isChecked == true) {
    checkIndex.add(i);
    nonRepated.add(responseData[i].name);             
  } else {
    nonRepated.remove(responseData[i].name);       
  }
});  
}

现在我需要检查项目的名称并添加它们各自的小部件或任何其他更好的方法来检查条件。 它们可能是一个或多个具有不同布局的选定项目,如果用户按下图标,我还需要删除相关布局。 无法从上述这些步骤前进。

我将标识符添加到 responseData 为:

 responseData = [
  PData(0, "गाई", 'cow', false),
  PData(1, "भैंसी   ", 'buffalo', false),
  PData(2, " चौरी/याक   ", 'yak', false),
  PData(3, "गोरु/राँगा  ", 'ox', false),
  PData(4, "भेँडा/बाख्रा/च्याङ्ग्रा ", 'sheep', false),
  PData(5, "बङ्गुर/ सुङ्गुर/ बँदेल", 'pig', false),
  PData(6, "कुखुरा ", 'chicken', false),
  PData(7, "अन्य पन्छीहरु  ", 'birds', false),
  PData(8, "मत्स्य  ", 'fish', false),
  PData(9, "घाँसबाली   ", 'grass', false),
  PData(10, "अन्य (पशुपन्छी तथा मत्स्य)    ", 'other', false),
];

回调 function:

 onChecked(var value, int i, String name) {
    setState(() {
      if (responseData[i].isChecked == true) {
      
  identifiers.add(responseData[i].identifier);
        nonRepated.add(responseData[i].name);             
      } else {
 identifiers.remove(responseData[i].identifier);
        nonRepated.remove(responseData[i].name);       
      }
    });  
    }

构建方法:

 for (int i = 0; i < identifiers.length; i++)
        _MachineData(identifiers, i, nonRepated[i], checkIndex[i]),

机器数据小部件

 Widget _MachineData(var params, int i, String nonRepate, int checkInde) {
switch (params[i]) {
  case 'cow':
    return Cow(nonRepated, i, checkInde, nonRepate, onDelete);
  case 'buffalo':
    return Buffalo(nonRepated, i, checkInde, nonRepate, onDelete);
  
  default:
    return Container();
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM