文章目錄
- 概念介紹
- 使用方法
- 示例代碼
- 使用擴展
我們在上一章回中介紹了
flutter_screenutil
包相關的內容,本章回中將介紹
dart中的setter/getter方法.閑話休提,讓我們一起Talk Flutter吧。
概念介紹
我們在這里介紹的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方法"相關的內容就介紹到這里,歡迎大家在評論區交流與討論!