提问者:小点点

更新列表中的对象


我在一个类中调用一个函数,它将更新一个列表对象。 我已经成功地获得了所需的对象并更改了其中的值。 如何更新回原始列表?

下面是我的代码:

void updateTask(
  Guid id, String title, String start, String end, String timeleft) {
  final taskToBeUpdated = _tasks.firstWhere((element) => element.id == id);
  taskToBeUpdated.title = title;
  taskToBeUpdated.start = start;
  taskToBeUpdated.end = end;
  taskToBeUpdated.timeLeft = timeleft;
}

我知道我可以使用forloop来实现这一点

for (var i = 0; i < _tasks.length; i++) {
  if (_tasks[i].id == id) {
    _tasks[i].title = title;
    _tasks[i].start = start;
    _tasks[i].end = end;
    _tasks[i].timeLeft = timeleft;
  }
}

但是有没有更短的路呢?


共1个答案

匿名用户

您的第一段代码应该直接修改列表中的对象,因为dart通过引用传递它。

尝试运行以下代码以了解其工作原理:

List a = [{"dod":1}, {"dod":3}];

Map _b = a.firstWhere((e)=>e["dod"]==1);

_b["dod"] = 2;

print (a);