簡體   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