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.."
    )
);

Tags:

Dart

Flutter