У меня есть список Dismissible
виджетов следующим образом:
Dismissible(
direction: DismissDirection.endToStart,
key: Key(widget.data[i]),
onDismissed: (direction) {
widget.onRemoveRequest(i, widget.data[i]);
},
background: Container(
color: Colors.red,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 20.0),
child: Text(
"Delete",
textAlign: TextAlign.right,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w500,
fontSize: 16.0,
),
),
),
],
),
),
child: CustomTextField(
padding: const EdgeInsets.only(left: 30.0, right: 30.0),
hintText: widget.newEntryHint,
text: widget.data[i],
keyboardType: TextInputType.multiline,
onChanged: (val) {
widget.onChanged(i, val);
},
),
)
Работает как положено, кроме случаев удаления подходящих объектов.
Примечание: widget.onRemoveRequest
удаляет объект по указанному индексу из исходных данных, widget.data
.
widget.data
является List<String>
. Я предоставляю их как key
, однако всякий раз, когда у меня есть две совпадающие строки и я отклоняю одну, я получаю сообщение об ошибке, поскольку Dismissible
не удаляется из дерева (понятно).
A dismissed Dismissible widget is still part of the tree.
Так что со списком строк, как я могу убедиться, что у каждого есть уникальный ключ, даже если фактические строки равны / совпадают?