想要學習Dart語言的可以在 https://dartpad.cn/ 練習熟悉。活不多說,直接開始:
1、程序入口
在Dart裏,每一個App都必須有一個頂級的 main() 函數作爲應用程序的入口
void main() {
print("hello");// 控制檯輸出日誌
}
2、變量
Dart是類型安全的,它使用靜態類型檢查和運行時的組合,檢查以確保變量的值始終與變量的靜態值匹配類型。儘管類型是必須的,但某些類型註釋是可選的,因爲Dart會執行類型推斷。
在Dart中,未初始化的變量初始值爲null(注意:數字在Dart中也被當成對象,所以帶有數字類型的變量未初始化的值也爲null)
void main() {
String a = '100';
var b ='100';
int c;
print(a);
print(b);
print(c);
}
--------------------
100
100
null
3、檢查null或者0
在Dart中,只有布爾值true被視爲true
從Dart 1.12 開始,null-aware運算符可以進行null檢查,“?.” 運算符在左邊爲空的情況下會阻斷右邊的調用,“??” 主要作用是當表達是左邊爲null時爲其設置默認值。
bool isConnected(a,b){
bool outConn = outgoing[a]?.contains(b) ?? false
bool inConn = incoming[a]?.contains(b) ?? false
return outConn || inConn
}
void main() {
print(null);
print(true??false);
print(false??false);
print(null??false);
}
-----------------------
null
true
false
false
4、異步編程
Dart 支持單線程執行,Dart使用Future來表示異步操作
async和await
async函數返回一個Future,函數的主體是稍後執行,await運算符用於等待Futrue:
getIp() async{
var url = 'https://httpbin.org/ip';
var request =await HttpRequest.request(url);
String ip = json.decode(request.responseText)['origin'];
print(ip);
}
5、聲明式UI界面
什麼是聲明式UI ?
通常Android和ios的框架使用命令式UI編程的風格,也就是我們目前的手寫界面,手動構建xml佈局,然後在UI變更時使用對應的f方法進行變更。
Flutter 爲了減輕開發人員在各種UI狀態之間轉換的編程負擔,Flutter讓開發人員描述當前的UI狀態,並且不需要關係它如何過渡到框架。
6、導包
7、Flutter項目結構