Flutter get方法和set方法实战

Flutter get方法和set方法实战


在 Flutter 中,get 和 set 方法如何实现呢?

get 和 set 方法是一对用来读写对象属性的特殊方法,其实,实例对象的每一个属性都有一个隐式的 get 方法,而且如果为非 final 属性的话还会有一个 set 方法。

定义和使用 get 和 set 方法

我们可以使用 get 和 set 关键字来创建 get 和 set 方法。

示例:

class Rectangle {
  double left, top, width, height;

  Rectangle(this.left, this.top, this.width, this.height);

  // 定义两个计算产生的属性:right 和 bottom。
  double get right => left + width;
  set right(double value) => left = value - width;
  double get bottom => top + height;
  set bottom(double value) => top = value - height;
}

void main() {
  var rect = Rectangle(3, 4, 20, 15);
  assert(rect.left == 3);
  rect.right = 12;
  assert(rect.left == -8);
}

这里定义了 right 和 bottom 两对 get 和 set 方法,它们可以在赋值或者取值之前,进行一些计算操作,扩展了对属性的直接操作。

如果我们以后需要更改 right 和 bottom 的含义或计算方法,我们只需要修改 set 和 get 方法即可,外部引用根本不用修改,这也增强了代码的扩展性。

通过 get 方法获取结果

这里有一个例子,completed 代表了已完成数量,total 代表了总数量,我们可以创建一个 get 方法来返回”完成度(进度)“是多少,set/get 方法使用起来就像使用属性一样,非常方便:

  String get progress{
    if(completed <= 0){
      return "0%";
    }
    double pro = 100 * completed / total;
    return pro.toStringAsFixed(5).toString() + "%";
  }

细心的同学可能有所发下,这里使用的是{}来包裹函数体,而上一个例子中,函数体直接在 => 之后,这是怎么回事呢?

后者其实是前者的一种简写形式,语法 => 表达式 是 { return 表达式; } 的简写, => 有时也称之为胖箭头语法。详情可参考《Flutter(Dart)基础——函数详解》


**PS:点我!点我!点我!…… --> 《Flutter 开发》
**PS:点我!点我!点我!…… --> 《Flutter 开发》
**PS:更多,更多内容,请查看 --> 《Flutter 开发》

猜你喜欢

转载自blog.csdn.net/u011578734/article/details/112251341
今日推荐