Flutter 跨平台開發架構-Dart程式語言
Dart是物件導向程式語言,基本上如過你學習過Java、C#或有其他物件導向程式語言基礎,
在Dart的學習門檻上可以說是非常的低。
我們可以利用官方所提供的線上工具DartPad來練習程式碼。
型別
與其他語言類似,Dart也有String、int、double等這些基本的型別。
除了使用強型別的方式宣告型別外,也可以使用var來宣告變數,
使用var的方式在變數給予值後就會自動依照值的型別來決定,並且不能再變更型別。
另外還可以使用dynamic來宣告動態型別的變數,使用dynamic就可以不受限制的給予變數任何型別的值
集合型別
集合型別通常用來擺放多筆資料,在Dart中提供了List型別,
List可透過索引值取得對應的值,List可用與C#泛型的方式來指定集合中資料的型別,
或直接利用資料來自動給定集合中的資料型別。
Dart也提供字典類型的型別Map,透過key-value的方式來建立其資料
陳述式
Dart提供了大部分程式語言都有的陳述式,例如if-else、switch、for等,其用法也都是大同小異
if-else用來判斷條件式的結果是否成立,若成立就執行if區塊,
否則就執行else區塊(else為非必要區塊)
如果if-else的程式碼邏輯都只有簡單的一行,也可以更改成三元運算式來減少程式碼
for通常用在取得集合的資料,或者建立集合的資料使用
try-catch陳述式用於處理意外的程式錯誤,
將可能發生例外錯的程式碼部分放置在try區塊中,
當程式碼發生例外錯誤後,就會自動跳進catch區塊內,
並且在catch中可取得錯誤的類別物件。
finally區塊為非必要,表示一定會執行到的區塊,通在都用在關閉資源使用。
方法
方法通常用於將重複的程式碼邏輯放置在同一個地方,以減少重複的程式碼並提高可維護性。
定義方法的時候可宣告其最後回傳的型別,或者無回傳值void
Dart允許方法省略宣告回傳型別,可由最後return的值自動決定,
但為了可閱讀與可維護性,還是寫清楚會比較好些
若方法內容只有簡單的一行,可以進一步使用=>省略更多部分的程式碼
類別
Class通常就是用來封裝成商業模型,共用物件等,
在Class內可以封裝欄位、屬性以及方法,比較特別的一點是Dart只允許在Class中建立一個無名建構子,
無法像C#或Java一樣建立多載的無名建構子,要多建構子只能使用命名建構子
Dart的建構子參數有一個很便利的地方,就是可以直接讓他指定到Calss內的屬性/欄位,
就不用寫一堆指定值得動作
當然Dart的物件也可以使用繼承的方式,使用extends關鍵字來繼承父類別,
與Java和C#一樣,僅能繼承一個父類別。
Dart還提供了Mixin機制,一個Class可以Mixin多個其他Class,
代表不需要繼承父類別,也可以使用到其他Class內的功能,讓開發上更有彈性。
要使用Mixin功能則會用到with關鍵字。
非同步使用
在APP的開發中很常會使用到非同步的方式,不然會在等待執行的過程中,APP的UI會像卡住當機一樣,
要使用非同步時,會在方法後方加上async關鍵字,表示該方法中會有非同步的使用,
而await會加在非同步方法的前方,表示使用等待該非同步方法完成後才繼續往後執行。
Future則類似於C#的Task,用來封裝非同步的執行結果。