安卓開發學Flutter——Dart語法的一些注意點(第二篇)
theme: fancy
本文正在參加「金石計劃 . 瓜分6萬現金大獎」
前言
經過大概兩個星期的空閒時間學習,我簡單的過了一遍Flutter的語言Dart,其實這門語言與Java和Kotlin有很多相似的地方,需要重新學習的地方很少,但有些不同的地方我們就需要單獨來記憶下,所以本篇將一些需要注意的不同點在Dart語法體系中拎出來,防止後面學習的時候出現遺忘可以快速回顧。
正篇
首先寫Dart需要我們先搭好Flutter環境(詳見上篇安卓開發學Flutter——安裝與構建環境的一些注意點(第一篇) - 掘金 (juejin.cn)),然後新建一個Dart檔案即可開始學習編寫:
第一點 關鍵字注意點
首先,Dart語言上規定預設情況下,宣告的量都是 可變數
,不過它也有Kotlin中的var,可以用於表明變數為可變數,而且不用指定變數型別,但這種方式在Dart中不推薦,最好還是明確變數型別,此外每句程式碼末尾也要帶上“;”,這和Java又類似,Kotlin是句末不需要帶此符號的。
此外還有資料型別裡多了一個num:
num 既可以表示整數,也可以表示小數,根據你賦予的數字型別自己判斷。
第二點 函式注意點
函式方面,首先不需要和Kotlin一樣要fun關鍵字來標識為函式方法,和Java差不多的定義方式,但如果返回的為一行程式碼可以用“=>”去省寫
除此以外,Dart又多了很多其他引數使用方法,如下:
1.命名引數
用“{}”和關鍵字required來命名引數
Dart
//命名引數
void demo4({
required int x,
required int y
}) {
x = x * y;
}
Dart
//呼叫採用命名引數的函式不用按引數順序
demo4(y: 5, x: 3);
這種方式的好處就是呼叫的時候不用按引數順序寫入引數。
2.預設引數
與命名引數類似,不過不用使用required關鍵字且要在申明引數時候就給賦值了
Dart
//預設引數
int demo5({
int x = 5,
int y = 6,
}) {
return x + y;
}
Dart
//預設引數不用指定引數值,當然也可以使用引數值讓預設值失效
demo5();
demo5(x: 1, y: 2);
這種也是一個很方便的方式。
3.位置引數
這種是和命名引數有著相反的規定,"[]"裡的必須按順序傳參,如下:
Dart
//位置引數,需要嚴格按位置傳參,在和如日期相關的時候會用到
String demo6(int year,
[int month = 1,
int day = 1,
int hour = 0,
int minute = 0,
int second = 0]) {
return '$year年$month月$day日$minute$second';
}
還有我們Dart封裝好提供的日期方法也是使用位置引數:
這其中year引數為必須傳參,後面"[]"中引數要按順序填但是選填,原因是我們申明引數時已經賦予了預設值。
此外,可以自定義函式方法,還能將函式方法視為物件,並且可以作為引數放入函式:
```Dart typedef Demo = int Function(int);
Demo demo7 = demo;
//函式可以當成物件,並且可以入參方法 int demo8(int a, {Demo? demo}) { if (demo == null) return a; return demo(a); } ``` 這算是和我平時安卓原生開發最大的一點不同了。
第三點 類的注意點
類中限制私有訪問的 成員變數/方法或類
,通過名稱字首 _
進行限定,而且Dart不支援過載
在Dart的類這塊知識中,最大的不同就是沒有了interface這個關鍵字了,Dart這塊採用抽象類abstract class
宣告,實現還是用關鍵字implements,為解決二義性,這就要求派生類必須覆寫 介面
中的 所有
方法。\
而繼承關鍵字還是extends,此外,Dart還加了新的方式——混入類,混入類需要通過 mixin
關鍵字進行宣告(不能有構造方法),通過 with
關鍵字進行使用,特點是萬金油,繼承抽象類和介面的優勢都有。\
不過抽象類
、介面
、混入類
都是不能直接例項化的。
總結
這是我過一遍Dart語法的收穫,有些不全面,但暫時也夠用了,總體而言,如果你熟悉Java或Kotlin,應該還是很好學這門語言的,而更多注意的地方需要我在實戰中感悟再更新。\ 不過,如有不對的地方,還希望各位指正,謝謝觀看!
- 安卓開發一年技術小結——安卓開發技術整理
- 安卓Kotlin開發學習——接著看高階函式
- 兔兔按鈕——安卓懸浮按鈕
- 兔兔進度條Plus——SeekBar充當Progress
- 安卓基礎開發——ReentrantLock的簡單使用
- 安卓開發基礎——使用RecyclerView
- 安卓開發基礎(Java)——TextView的使用
- 安卓開發基礎——弱引用的使用
- 安卓開發基礎——實現音訊檔案的播放
- 讓UI忙碌的安卓Lottie動畫渲染庫(二)
- 強大而靈活的RecyclerView Adapter——BRVAH(框架引入與BaseQuickAdapter使用篇)
- 安卓語言基礎之Kotlin的面向物件程式設計
- 安卓語言基礎之Kotlin高階函式——Lambda表示式(二)
- 大放光彩的安卓Jetpack元件-ViewModel(一)
- 安卓語言基礎之Kotlin高階函式——Lambda表示式(一)
- 安卓開發必備——build.gradle檔案初探(一)
- 安卓開發學Flutter——Dart語法的一些注意點(第二篇)
- 簡單易用的安卓SharedPreferences儲存(資料儲存系列)
- 安卓開發基礎技術——WebView載入網頁
- 原汁原味的安卓檔案儲存(資料儲存系列)