首页 > 解决方案 > 在 Dart 中使用带有构造函数的 Setter

问题描述

如何在 Dart 的默认构造函数中使用私有实例变量的设置器?

给定示例类:

class A {
  String name;
  int _age;

  int get age => _age;

  set age(age) {
    _age = age ?? 0;
  }

  A(this.name, this._age);
}

如何使用此构造函数来执行该set age()函数?除了使用 a 之外还有factory吗?我想做这样的事情

A(this.name, newAge): age = newAge;

但是我得到一个错误,迫使我只从构造函数中设置实例变量,这让我只是复制了 setter:

A(this.name, newAge): _age = newAge ?? 0;

我是否遗漏了什么,或者这对飞镖来说是不可能的?

标签: flutterdart

解决方案


构造函数的初始化列表只能用于初始化成员(或调用基类构造函数)。(另外,初始化列表执行时,this还没有生效,所以不能访问任何成员。)

如果你想做其他类型的初始化工作,你可以在构造函数中做,此时对象被认为是充分构造的this有效的:

A(this.name, int newAge) {
  age = newAge;
}

另见:


推荐阅读