2019-09-18: 四:Flutter之Dart第一節(jié)(變量)?

四:Flutter之Dart第一節(jié)?

1: Dart介紹和安裝?

1.1: 認(rèn)識(shí)Dart

Google為Flutter選擇了Dart就已經(jīng)是既定的事實(shí)、無論你多么想用你熟悉的語言、比如JavaScript、Java卿吐、Swift、C++等來開發(fā)Flutter至少目前是不可能的。

其實(shí)如果你對(duì)編程語言有足夠的自信预柒、Dart的學(xué)習(xí)過程甚至可以直接忽略舒裤。

  • 因?yàn)槟銓W(xué)習(xí)N中編程語言后姆涩、你會(huì)發(fā)現(xiàn)它們的差異并不大
  • 無非就是語法上的差異 + 某些語言有某些特性
  • 在我初次接觸Flutter的時(shí)候、并沒有專門去看Dart語法惭每、而是對(duì)于某些語法不太熟悉的時(shí)候回頭去了解而已骨饿。

1.2: 安裝Dart

為什么還需要安裝Dart呢亏栈?
事實(shí)上在安裝Flutter SDK的時(shí)候、它已經(jīng)內(nèi)置了Dart了宏赘、我們完全可以直接使用Flutter去進(jìn)行Dart的編寫并且運(yùn)行.

但是绒北、如果你想要單獨(dú)學(xué)習(xí)Dart、并且運(yùn)行自己的Dart代碼察署、最好去安裝一個(gè)Dart SDK闷游。

下載Dart SDK

到Dart官網(wǎng)去下載對(duì)應(yīng)操作系統(tǒng)的Dart:https://dart.dev/get-dart
無論是什么操作系統(tǒng)、安裝方式都是兩種:通過工具安裝或者直接下載SDK贴汪、配置環(huán)境變量

1.2.1: 通過工具安裝
  • windows可以通過Chocolatey
  • macOS可以通過Homebrew
  • 具體安裝操作官網(wǎng)網(wǎng)站有詳細(xì)的介紹
1.2.2: 直接下載Dart SDK脐往、配置環(huán)境變量來安裝

1.3:VSCode 配置Dart

學(xué)習(xí)Dart過程中梅尤、使用VSCode作為編輯器

  • 一方面編寫代碼非常方便、而且界面風(fēng)格我也很喜歡
  • 另一方面我可以快速在終端看到我編寫代碼的效果

使用VSCode編寫Dart需要安裝Dart插件:我目前給這個(gè)VSCode安裝了四個(gè)插件

  • Dart 和 Flutter插件是為了Flutter開發(fā)準(zhǔn)備的
  • Atom One Dark Theme是我個(gè)人比較喜喜歡的一個(gè)主題
  • Code Runner可以點(diǎn)擊右上角的按鈕讓我快速運(yùn)行代碼

2. Hello Dart

2.1: Hello World

接下來岩调、就可以步入主題了巷燥、學(xué)習(xí)編程語言、從祖?zhèn)鞯腍ello World開始

在VSCode中新建一個(gè)helloWorld.dart文件号枕、添加下面的內(nèi)容

  • 新建一個(gè)文件夾缰揪、從VSCode選擇文件夾


    圖片.png
  • 編寫代碼如下:
main(List<String> args) {
print('hello world dart');
}
  • 執(zhí)行右上角的按鈕(當(dāng)你安裝了Code Runner插件以后)、會(huì)發(fā)生報(bào)錯(cuò):
    [Running] dart "/Users/qxu7859/Desktop/Dart練習(xí)/helloWorld.dart"
    Dart_LoadScriptFromKernel: The binary program does not contain 'main'.
  • 先保存代碼葱淳、 再運(yùn)行就OK??了

2.2: 程序的分析

接下來就是程序的分析

  • 一:Dart 語言的入口也是main函數(shù)钝腺、并且必須顯示的進(jìn)行定義;
  • 二:Dart的入口函數(shù)main是沒有返回值的蛙紫;
  • 三:傳遞給main的命令行參數(shù)拍屑、是通過List<String>完成的;
    1: 從字面值就可以理解List是Dart中的集合類型坑傅;
    2: 其中的每一個(gè)String都表示傳遞給main的一個(gè)參數(shù)僵驰;
  • 四:定義字符串的時(shí)候、可以使用單引號(hào)''或者雙引號(hào)"";
  • 五:每行語句必須使用分號(hào)結(jié)尾唁毒、很多語言并不需要分號(hào)蒜茴、比如Swift、javaScript浆西;

3: 定義變量

3.1: 變量聲明

明確聲明變量的方式粉私、格式如下:

  • 變量類型 變量名稱 = 賦值;
示例代碼:
String name = 'lishengbing';
int age = 18;
double height = 1.88;
print('name=${name}, age=${age}, height=${height}');

注意事項(xiàng)??:定義的變量可以修改值近零、但是不能賦值其他類型
name = 'new value'; 正確?
name = 18; 錯(cuò)誤?

3.2: 類型推導(dǎo)(Type Inference)

類型推導(dǎo)聲明變量的方式诺核、格式如下:

  • var/dynamic/const/final 變量名稱 = 賦值抄肖;
3.2.1: Var的使用

var 正確使用示例:

- runtimeType用于獲取變量當(dāng)前的類型
var name = 'lishengbing';
name = 'make';
print('runtimeType=${name.runtimeType}') // String

--
var 錯(cuò)誤用法:

var age = 18;
age = 'lishengbing'; // 不可以將String類型賦值給一個(gè)int類型
3.2.2: dynamic的使用

如果確實(shí)希望這樣做、可以使用dynamic來聲明變量:

  • 但是在開發(fā)中窖杀、通常情況下不使用dynamic漓摩、因?yàn)轭愋偷淖兞繒?huì)帶來潛在的危險(xiǎn)
dynamic name = 'lishengbing';
print(name.runtimeType); // String
name = 18;
print(name.runtimeType); // int
3.2.3: final & const的使用
final 和 const 都是用于定義常量的、也就是說定義之后值都不可以修改

final name = 'lishengbing';
name = 'final'; // 不可以修改?
const age = 18;
age = 28; // 不可以修改 ?
final 和 const 有什么區(qū)別呢?
  • const在賦值時(shí)入客、賦值的內(nèi)容必須是在編譯期間就確定下來的管毙。
  • final在賦值時(shí)、可以動(dòng)態(tài)獲取桌硫、比如賦值一個(gè)函數(shù)夭咬。
String getName() {
   return 'lishengbing';
}
main(List<String> args) {
   const name = getName(); // 錯(cuò)誤的做法,因?yàn)樾枰獔?zhí)行函數(shù)才可以獲取到值
   final name = getName(); //正確的錯(cuò)誤
}
final 和 const的小案例:
  • 首先铆隘、const是不可以賦值為DateTime.now()
  • 其次卓舵、final一旦被賦值后就有確定的結(jié)果、不會(huì)再次賦值
const time = DateTime.now(); // 錯(cuò)誤的賦值方式
final time = DateTime.now();
print(time); // 2019-09-18 16:04:20.768250
>```

const 放在賦值語句的右邊咖驮、可以共享對(duì)象边器、提高性能训枢;
- 這里可以暫時(shí)先做了解托修、后面講解類的常量構(gòu)造函數(shù)時(shí)、在提到這個(gè)概念恒界。
class Person {
------const Person();
}
main(List<String> args) {
 final a = const Person();
 final b = const Person();
 // const賦值在右邊=true
 print('const賦值在右邊=${identical(a,b)}');
 final m = Person();
 final n = Person();
 // 不用const賦值在右邊=false
 print('不用const賦值在右邊=${identical(m,n)}');
}
>```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睦刃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子十酣,更是在濱河造成了極大的恐慌涩拙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸采,死亡現(xiàn)場離奇詭異兴泥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)虾宇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門搓彻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘱朽,你說我怎么就攤上這事旭贬。” “怎么了搪泳?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵稀轨,是天一觀的道長。 經(jīng)常有香客問我岸军,道長奋刽,這世上最難降的妖魔是什么瓦侮? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮佣谐,結(jié)果婚禮上脏榆,老公的妹妹穿的比我還像新娘。我一直安慰自己台谍,他們只是感情好须喂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趁蕊,像睡著了一般坞生。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掷伙,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天是己,我揣著相機(jī)與錄音,去河邊找鬼任柜。 笑死卒废,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宙地。 我是一名探鬼主播摔认,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宅粥!你這毒婦竟也來了参袱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤秽梅,失蹤者是張志新(化名)和其女友劉穎抹蚀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體企垦,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡环壤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钞诡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郑现。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖臭增,靈堂內(nèi)的尸體忽然破棺而出懂酱,到底是詐尸還是另有隱情,我是刑警寧澤誊抛,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布列牺,位于F島的核電站,受9級(jí)特大地震影響拗窃,放射性物質(zhì)發(fā)生泄漏瞎领。R本人自食惡果不足惜泌辫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望九默。 院中可真熱鬧震放,春花似錦、人聲如沸驼修。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乙各。三九已至墨礁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耳峦,已是汗流浹背恩静。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹲坷,地道東北人驶乾。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像循签,于是被迫代替她去往敵國和親级乐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355