今天會繼續介紹dart被應用在flutter裡一些常見的語法,畢竟我在剛開始寫flutter的時候對dart語法還不熟悉,因此導致我的程式碼很冗長且複雜,所以我會利用接下來幾天的鐵人賽把dart常用到的一些語法和operator介紹清楚。
=>
是一種快速建立function的方法,=>可以回傳右邊表示式的值
bool hasEmpty = aListOfStrings.any((s) {
return s.isEmpty;
});
可以改寫成
bool hasEmpty = aListOfStrings.any((s) => s.isEmpty);
..
可以對同一物件進行一連串的操作並且讓使用者不用再創建暫時的變數去儲存值
var button = querySelector('#confirm');
button?.text = 'Confirm';
button?.classes.add('important');
button?.onClick.listen((e) => window.alert('Confirmed!'));
button?.scrollIntoView();
可以改寫成
querySelector('#confirm')
?..text = 'Confirm'
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'))
..scrollIntoView();
當你如果想要對屬性(property)做更多操作,甚至超過simple field的允許時,你可以透過定義getters and setters 去完成這些需求
class MyClass {
int _aProperty = 0;
int get aProperty => _aProperty;
set aProperty(int value) {
if (value >= 0) {
_aProperty = value;
}
}
}
class MyClass {
final List<int> _values = [];
void addValue(int value) {
_values.add(value);
}
// A computed property.
int get count {
return _values.length;
}
}
以上的程式碼可以看到使用set和get可以獲得物件屬性的讀取或寫入權,基本上每個class裡的instance variable都有隱性的getter和setter,所以想對物件的屬性進行操作時不要忘記使用dart特有的getters and setters
參考資料:
https://dart.dev/codelabs/dart-cheatsheet
https://www.educative.io/answers/what-is-dart-cascade-notation
https://dev.to/newtonmunene_yg/dart-getters-and-setters-1c8f