Dart Memo for Android Developers
Dart語言一些語法特點和編程規範.
本文適合: 日常使用Kotlin, 突然想寫個Flutter程序的Android程序員.
Dart語言
完整的請看A tour of the Dart language
- 創建對象可以不用
new
. -> 並且規範不讓用new
, lint會報錯. - 聲明變量可以用
var
, 也可以用具體類型如String
. 不變量用final
, 常量用const
. - 沒有訪問修飾符, 用
_
來表示私有: 文件級別. - 字符串可以用單引號
'
. - 語句結尾要用
;
. - 創建數組可以用:
var list = [1, 2, 3];
. assert()
常用來斷定開發時不可能會出現的情況.- 空測試操作符:
??
. - 過濾操作符:
where
. - 兩個點
..
表示鏈式調用. dynamic
說明類型未指定.- 除了throw異常, 還可以throw別的東西, 比如字符串.
函數
- 函數返回值在函數最開頭, 可以不標. -> 但是規範會建議標註返回值.
bool isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}
=>
箭頭符號, 用來簡化一句話的方法.
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
構造函數
- 構造函數
{}
表示帶名字, 參數可選, 若要必選加上@required
.
const Scrollbar({Key key, @required Widget child})
- 構造函數名可以是
ClassName
或者ClassName.identifier
. - 空構造函數體可以省略, 用
;
結尾就行:
class Point {
double x, y;
Point(this.x, this.y);
}
這裡會初始化相應的變量, 也不用聲明具體的參數類型.
- 有
factory
構造, 可以用來返回緩存實例, 或者返回類型的子類:
factory Logger(String name) {
return _cache.putIfAbsent(name, () => Logger._internal(name));
}
異步代碼
Future<String> lookUpVersion() async => '1.0.0';
Future checkVersion() async {
var version = await lookUpVersion();
// Do something with version
}
編程規範類
完整的規範在這裏: Effective Dart.
有一些Good和Bad的舉例, 這裏僅列出比較常用的幾項.
- 文件名要蛇形命名:
lowercase_with_underscores
. 類名:UpperCamelCase
. - 對自己程序的文件, 兩種import都可以(package開頭或者相對路徑), 但是要保持一致.
- Flutter程序嵌套比較多, 要用結尾的
,
來幫助格式化.
本文緣由
年初的時候學了一陣子Flutter, 寫了各種大小demo. 結果隔了兩個月之後, 突然心血來潮想寫個小東西, 打開Android Studio, 首先發現創建Flutter程序的按鈕都不見了. (估計是Android Studio4.0升級之後Flutter的插件沒跟上).
接着用命令行創建了工程, 打開之後稍微整理了一下心情, 然後就….懵逼了.
突然不知道如何下手.
宏觀的東西還記得, 要用什麼package, 基本常用的幾個Widget都是啥, 但是微觀的, 忘了函數和數組都是咋定義的了.
這種懵逼的狀態令我很憤怒, 果然是上年紀了嗎, 無縫切換個語言都不行.
於是就想着還是寫個備忘錄吧.
References
- A tour of the Dart language
- Effective Dart
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!
※網頁設計公司推薦不同的風格,搶佔消費者視覺第一線
※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整
※南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!
※教你寫出一流的銷售文案?
※超省錢租車方案