首页 > 解决方案 > 使用 Getter 时返回不可修改的列表

问题描述

我有一个带有私有字段的类,我正在使用 getter 来访问这些私有字段:

List<Event> get events {
    return _events;
  }

问题是当我得到事件并改变它的值时,原始值(_events)也会改变。

userProfile.events.removeWhere((event)=> event.id == "1"); //this modifies _events as well 

如何更改此行为,以便仅更改events而不影响原始_events值?

我可以这样做:

List<Event> get events {
    return [..._events];
  }

这基本上是一个副本,_events但是有没有办法像我们在Java中那样将它作为不可修改的集合返回?

谢谢

标签: flutterdart

解决方案


你可以使用List.unmodifiable()构造函数。

List<String> get name => List.unmodifiable(_name);

结帐文档


推荐阅读