ListView ListTile Switches 在 Flutter 中同时切换

时间:2021-05-21 23:04:25

标签: flutter listview dart

我有 val list = buildList { if (city.isNullOrBlank()) add("Invalid city") if (state.isNullOrBlank()) add("Invalid state") if (country.isNullOrBlank()) add("Invalid country") if (zip.isNullOrBlank()) add("Invalid zip code") } ListView 的尾随 ListTile。我的问题是当我切换任何开关时,其他开关也会切换,尽管它们不应该。

外观如下:

enter image description here

这是代码(删除了杂乱的内容):

Switch

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为 List.filled() 创建了一个列表,其中所有元素实际上都使用相同的对象。换句话说,您的 scheduleList 一遍又一遍地拥有相同的对象,而不是不同的对象。要为每个索引创建一个新对象,请改用 List.generate()

只需将您的 //Init list of programs 代码替换为此代码即可:

//Init list of programs
  List<ScheduleProgram> scheduleList = List<ScheduleProgram>.generate(
      10,
      (index) => ScheduleProgram(
          enabled: false,
          isStart: false,
          time: TimeOfDay(minute: 0, hour: 0),
          duration: 0,
          dow: [false, false, false, false, false, false, false]),
      growable: false);