如何创建多个 setter

How to create multiple setters

我有一个变量,我想提供调用多种类型的 setter 的选项,但我当然会用一种类型设置变量。例如,如果我有一个名为 list 的变量,我希望能够使用单个列表项(即字符串)调用 setter,然后在 setter 方法中我会将字符串添加到末尾的名单。另一种设置变量的方法是通过实际列表,setter,我只是将列表设置为传入的列表。

这是我想做的一个例子,但是我第二次调用列表 setter 方法时,我收到一条错误消息 The name 'list' is already defined:

List<String> _list = [];

List<String> get list => list;

set list(List<String> newList) {
  _list = newList;
}

set list(String newListItem) {
  _list = [..._list, newListItem];
}

那是不可能的。

在 Dart 中,每个变量只能有一个 setter。 您将需要重命名您的 setter 之一以使用不同的名称。

正如雷米所说,这是不可能的。我认为最好不要这样做,因为它会改变 setter 合同的预期。也就是说,您希望 setter 替换变量的值。附加一个 setter 是违反直觉的,并且会导致其他开发人员感到困惑。

通常,为了代码库的可维护性,最好为您的 class 行为提供一个显式接口,而不是提供简洁的快捷方式。