我们在这里介绍的setter/getter方法属于编程语言中的知识,现代编程语言都支持这两种方法,而且会自动生成,dart也支持这两种方法,但是不会自动生成。使用
这两种方法可以方便开发人员修改和获取类中的属性值。在程序开发中,这两种方法使用十分广泛。比如我们在前面章回中介绍的数据共享,以及屏幕适配包中源代码都
使用了这两种方法,只是当时我们没有介绍而已,本章回中将详细介绍这两种方法的使用方法。
我们先介绍settter/getter方法的语法,详细如下:set FuncName(Type){}; Type get FuncName{};语法中的Type表示属性的类型,FuncName表示方法
的名字,比较奇怪的是这两个方法的名字尽然可以相同,使用IDE自动生成setter/getter方法时就会创建相同名字的方法。语法中的set和get是语法关键字,创建这
两个方法时关键字不能少,使用关键字后getter方法名后面就没有括号了,这是和其它编程语言不同的地方。
class ViewModel extends ChangeNotifier {
late int _intData;
late String _data;
ViewModel() {
_intData = 0;
_data = 'init data';
}
int get intData => _intData;
set intData(int value) {
_intData = value;
}
String get getData {
return _data;
}
set setData(String value) {
_data = value;
}
}
上面的示例代码中包含两个属性,我们给这两个属性创建了setter/getter方法,其中intData属性的方法是IDE自动生成的,而data属性的方法是自己手写的。此外,
getter方法中还可以使用dart的语法糖箭头,这样可以使代码简洁一些。
在实际项目中getter方法还有另外一种扩展使用的方法,我也是在适配屏幕包中的源代码中看到的,下面是示例代码:
///使用extension语法对double进行扩展,这样就可以使用2.0.w这样的语法来做适配,使的代码更加简洁
///这个语法参考了screenutil包中的语法,因为该包中有这样的使用方法。
extension DoubleExtension on double {
double get w {
return XScreenUtil.setFitRatio(this);
}
}
上面的代码中使用extension语法扩展了基础类double中的方法,相当于添加了一个名叫w的getter方法。在程序中的其它地方可以使用double对象.w这样的语法来
使用getter方法,这种代码初次看时不好理解,使用多了反而会觉得很方便。
看官们,关于"dart中的setter/getter方法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!