Flutter Edit List Item
This assumes a ReplyTile
is a widget, if it is not, you don't need the setState
calls.
If you can guarantee the item is in the list, use:
final tile = replytile.firstWhere((item) => item.id == '001');
setState(() => tile.member_name = 'New name');
If the item is not found, an exception is thrown. To guard against that, use:
final tile = replytile.firstWhere((item) => item.id == '001', orElse: () => null);
if (tile != null) setState(() => tile.member_name = 'New name');
Below is the code to update a single item of list using the index. You can simple create an extension function for the same.
extension ListUpdate<T> on List<T> {
List<T> update(int pos, T t) {
List<T> list = [];
list.add(t);
replaceRange(pos, pos + 1, list);
return this;
}
}
And use it like below to replace an item.
replytile.update(
5, new ReplyTile(
member_photo: "photo",
member_id: "001",
date: "01-01-2018",
member_name: "Denis",
id: "001",
text: "hallo.."
)
);