Dart getter 和 setter

什么是 get 方法

get 方法是 Dart 中的一种特殊方法,它可以让我们在访问对象属性时自动执行一些操作。在定义一个 get 方法时,我们需要使用关键字 get,后面跟着一个方法名,例如:

get name => name;

上面的代码定义了一个叫做 name 的 get 方法,它会返回一个私有变量 name的值

如何使用 get 方法

像访问一个属性一样访问即可 :

class Person {
  late String name;
  late int _age;
  Person(this.name, this._age);
  String get Desc {
    return "My name is ${this.name} and I am ${this._age} years old.";
  }

  void Say() {
    print(Desc);
  }
}

void main(List<String> args) {
  Person person = Person("John", 25);
  // 此处无法访问私有变量
  // person._age = 26;
  person.Say();
}

set 方法

set 是告诉编译器这是一个 setter 方法的关键字。在 set 关键字之后,我们有要在以下代码块中设置其值的 fieldName。

set 更像是一种过滤器,可以对数据设置过程进行校验、控制等操作。

class Person {
  late String name;
  late int _age;
  Person(this.name, this._age);
  String get Desc {
    return "My name is ${this.name} and I am ${this._age} years old.";
  }

  set Age(int age) {
    if (age >= 0) {
      this._age = age;
    } else {
      this._age = 0;
    }
  }

  void Say() {
    print(Desc);
  }
}

void main(List<String> args) {
  Person person = Person("John", 25);
  person.Age = -9;
  // 此处无法访问私有变量
  // person._age = 26;
  person.Say();
}