У меня есть DataTable с раскрывающимся списком, где я могу выбрать пользователя. Но мне нужно узнать индекс строки, которая изменилась (например, когда я меняю первую строку с пользователя 1 на пользователя 2, я хочу получить 1 (или 0, что угодно)). Я пытался использовать onSelectedChanged для DataTable с этими флажками, но как только я нажимаю на раскрывающийся список, он не устанавливает флажок в указанной c строке.
Есть ли способ получить номер строки?
DataTable(
columnSpacing: 12,
columns: [
DataColumn(label: Text('ID')),
DataColumn(label: Text('Date')),
DataColumn(label: Text('Weekday')),
DataColumn(label: Text('User'))
],
rows: days
.map(
((element) => DataRow(
selected: selected.contains(element),
onSelectChanged: (checked) {
if (checked) {
setState(() {
selected.add(element);
});
} else {
setState(() {
selected.remove(element);
});
}
},
cells: <DataCell>[
DataCell(Text(element["ID"])),
DataCell(Text(element["DAY"])),
DataCell(Text(element["WEEKDAY"])),
DataCell(dropDownList(element["USER"]))
],
)),
)
.toList(),
);
Раскрывающийся список:
Widget dropDownList(String currentUser) {
return DropdownButton(
value: currentUser,
iconSize: 24,
elevation: 16,
style: TextStyle(color: Colors.red[900], fontWeight: FontWeight.bold),
onChanged: (String newValue) {
setState(() {
currentUser = newUser;
});
},
items: users
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
);
}
Изображение: с возможностью датирования с раскрывающимся списком