Dart编程中需要getter和setter吗?

时间:2019-07-11 22:14:48

标签: flutter dart

我曾经在Kotlin编程很长时间了。 我对Dart编程很陌生。

所以我想Dart编程中需要getter和setter。 (如果getter和setter没有逻辑,则为纯getter,setter)

我的

IDE是VSCode。当我尝试查看设置了特定变量的位置并获取=>时,我使用了“查找所有引用”。此功能显示设置和获取的混合。 因此,我认真考虑将每个字段设置为setter和getter。

当我使用Kotlin时,该语言会自动生成getter和setter。 IDE为我提供了get / set的单独参考。 对我来说,使每个吸气剂塞特器很烦人。

有什么好方法可以用IDE查看set / get的单独引用吗? 还是有其他原因使用getter和setter? (如果getter和setter没有逻辑,则为纯getter,setter)

class DisplayConstant {
  double statusbarHeight = 0;
  double devicePixelRatio = 1;
}

vs

class DisplayConstant {
  double _statusbarHeight = 0;
  double _devicePixelRatio = 1;

  double get statusbarHeight => _statusbarHeight;
  set statusbarHeight(double statusbarHeight) =>
      _statusbarHeight = statusbarHeight;
  double get devicePixelRatio => _devicePixelRatio;
  set devicePixelRatio(double devicePixelRatio) =>
      _devicePixelRatio = devicePixelRatio;
}

1 个答案:

答案 0 :(得分:5)

使用getter / setter是可选的。在某些情况下可能会有帮助,例如,当您需要在获取数据时添加其他逻辑时。

class DisplayConstant {
  //make your variables private using _ at the beginning
  double _factor = 0.5;
  double _statusbarHeight = 0;
  double _devicePixelRatio = 1;

  double get statusbarHeight => _statusbarHeight * _factor;
  double get devicePixelRatio => _devicePixelRatio * _factor;
  set statusbarHeight(double statusbarHeight) => _statusbarHeight = statusbarHeight;
  set devicePixelRatio(double devicePixelRatio) =>_devicePixelRatio = devicePixelRatio;
}

使用setter和getter对类的用户透明。这样一来,您就可以随着时间的推移不断发展自己的API,而不会破坏现有的用户,就像这样:

final display = DisplayConstant();
//set your data
display.statusbarHeight = 20;
display.devicePixelRatio = 0.5;
//get your data
print(display.statusbarHeight);
print(display.devicePixelRatio);

如果您不打算在获取属性时计划添加一些逻辑,则可以避免获取/设置并直接调用属性。

您可以在此链接中找到更多信息:http://dartdoc.takyam.com/dart-tips/dart-tips-ep-10.html