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 开发》