Flutter學(xué)習(xí)預(yù)準(zhǔn)備

簡(jiǎn)介

Flutter主要用于跨平臺(tái)開(kāi)發(fā),這里以Android和iOS開(kāi)發(fā)作為學(xué)習(xí)主線
Flutter其實(shí)是一個(gè)SDK也是一個(gè)框架,用到的語(yǔ)言是Dart

Flutter與Dart的關(guān)系:
Flutter_Dart關(guān)系圖.png

學(xué)習(xí)Flutter之前,首先需要了解和掌握Dart語(yǔ)言的語(yǔ)法

環(huán)境安裝

Flutter官網(wǎng)
Flutter中文網(wǎng)
Flutter Book中文

具體的安裝按照官網(wǎng)的配置一下即可
在配置的過(guò)程中出現(xiàn)的問(wèn)題,當(dāng)終端關(guān)閉后再打開(kāi),flutter沒(méi)有默認(rèn)加載,后來(lái)發(fā)現(xiàn)漏掉了一項(xiàng)配置

注意: 如果你使用的是zsh宦赠,終端啟動(dòng)時(shí) ~/.bash_profile 將不會(huì)被加載筒狠,解決辦法就是修改 ~/.zshrc ,在其中添加:source ~/.bash_profile

沒(méi)有使用zsh的電腦不需要配置此項(xiàng)

Dart基礎(chǔ)語(yǔ)法

void main(List<String> args) {
  print("hello dart");

// 當(dāng)行注釋
/**
 * 多行
 * 注釋
 */

//  變量和數(shù)據(jù)類(lèi)型
int age = 23;
double height = 185.5;
String name  = "Tom";
bool isValid = true;

//String拼接
String welcome = "welcome ";
String welcomeTom = welcome + name;
print(welcomeTom);

print(name + " heigt is " + height.toString());
print("$name age is $age");
}

// dynamic和Object

/**
 * Object 是Dart所有對(duì)象的根基類(lèi),也就是說(shuō)所有類(lèi)型都是Object的子類(lèi)(包括Function和Null),
 * 所以任何類(lèi)型的數(shù)據(jù)都可以賦值給Object聲明的對(duì)象. dynamic與var一樣都是關(guān)鍵詞,聲明的變量可以賦值任意對(duì)象。 
 * 而dynamic與Object相同之處在于,他們聲明的變量可以在后期改變賦值類(lèi)型偏形。
 */
dynamic t;
Object x;
t = "Hello World";
x = "Hello Dart";
t = 100;
x = 200;
/**
 * dynamic與Object不同的是,dynamic聲明的對(duì)象編譯器會(huì)提供所有可能的組合, 
 * 而Object聲明的對(duì)象只能使用Object的屬性與方法, 否則編譯器會(huì)報(bào)錯(cuò)
 * dynamic的這個(gè)特性與Objective-C中的id作用很像. 
 * dynamic的這個(gè)特點(diǎn)使得我們?cè)谑褂盟鼤r(shí)需要格外注意,這很容易引入一個(gè)運(yùn)行時(shí)錯(cuò)誤.
 */

// final和const
/**
 * 如果您從未打算更改一個(gè)變量,那么使用 final 或 const觉鼻,不是var俊扭,也不是一個(gè)類(lèi)型。 
 * 一個(gè) final 變量只能被設(shè)置一次坠陈,
 * 兩者區(qū)別在于:const 變量是一個(gè)編譯時(shí)常量萨惑,final變量在第一次使用時(shí)被初始化。
 * 被final或者const修飾的變量仇矾,變量類(lèi)型可以省略庸蔼,如:
 */

//可以省略String這個(gè)類(lèi)型聲明
final str = "hi world";
//final String str = "hi world"; 
const str1 = "hi world";
//const String str1 = "hi world";

控制語(yǔ)句

// 條件控制語(yǔ)句
var salary = 2000;
if (salary < 2000) {
  print("$salary 小于 2000");
} else if (salary == 2000) {
  print("$salary 等于 2000");
} else {
  print("$salary 大于 2000");
}

int a = 20;
int b = 30;
if (a < b) {
  print("$a 小于 $b");
} else {
    print("$a 大于 $b");
}

// ?: 表達(dá)式
a < b ? print("$a 小于 $b") : print("$a 大于 $b");

// ?? 表達(dá)式
String people = "Tom";
String people2 = people ?? "Jack";
print(people2);

// Switch
String grade = "A";
switch (grade) {
  case "A":
    print("vary good");
    break;
    case "B":
    print("good");
    break;
    case "C":
    print("bad");
    break;
  default:
    print("error");
}

循環(huán)遍歷

// 循環(huán)語(yǔ)句
// for循環(huán)
for (var i = 0; i < 10; i++) {
  print(i);
}

// for in 循環(huán)
List arr = ["A", "B", "C"];
for (var item in arr) {
  print(item);
}

// while
int i = 5;
while (i > 0) {
  print("while i $i");
  i--;
}

// do while
int j = 5;
do {
  print("do while j $j");
  j--;
} while (j > 0);

print("i: $i, j: $j");

函數(shù)

// 1.定義最簡(jiǎn)單的函數(shù)
void sumValue1() {
  int a = 1;
  int b = 1;
  int sum = a + b;
  print(sum);
}

// 2.函數(shù)傳參
void sumValue2(int a, int b) {
  int sum = a + b;
  print(sum);
}

// 3.函數(shù)返回值
int sumValue3(int a, int b) {
  int sum = a + b;
  return sum;
}

// 4.函數(shù)默認(rèn)返回值
int sumValue4(int a, int b) {
  int sum = a + b;
}

// 5.箭頭函數(shù)(無(wú)返回值)
void sumValue5(int a, int b) => print(" a + b = ${a + b}");

// 6.箭頭函數(shù)(有返回值)
int sumValue6(int a, int b) => a + b;

// 7.函數(shù)參數(shù)(可選參數(shù))
void printCities (String name1, [String name2, String name3]) {
  print("name1 is $name1");
  print("name2 is $name2");
  print("name3 is $name3");
}

// 8.函數(shù)參數(shù) 命名
void findVolume({int length, int height, int width}) {
  print("length is $length");
  print("height is $height");
  print("width is $width");
}

// 9.函數(shù)參數(shù) 賦默認(rèn)值
void findVolume2({int length, int height = 20, int width}) {
  print("length is $length");
  print("height is $height");
  print("width is $width");
}

// 10.函數(shù)作為參數(shù)傳遞
void execute(var callback) {
    callback();
}
// 調(diào)用
execute(() => print("xxx"));

深入學(xué)習(xí)語(yǔ)法可參考Dart官方教程
這里只是做一個(gè)入門(mén)的語(yǔ)法學(xué)習(xí),接下來(lái)會(huì)在flutter實(shí)際開(kāi)發(fā)中邊做邊深度學(xué)習(xí).
我們可以看出,Dart語(yǔ)法與swift或者C語(yǔ)言的語(yǔ)法相似,有了其他語(yǔ)言的基礎(chǔ),基本上可以輕松上手

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贮匕,隨后出現(xiàn)的幾起案子姐仅,更是在濱河造成了極大的恐慌,老刑警劉巖刻盐,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掏膏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡敦锌,警方通過(guò)查閱死者的電腦和手機(jī)馒疹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)供屉,“玉大人行冰,你說(shuō)我怎么就攤上這事溺蕉。” “怎么了悼做?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵疯特,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我肛走,道長(zhǎng)漓雅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任朽色,我火速辦了婚禮邻吞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葫男。我一直安慰自己抱冷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布梢褐。 她就那樣靜靜地躺著旺遮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盈咳。 梳的紋絲不亂的頭發(fā)上耿眉,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音鱼响,去河邊找鬼鸣剪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丈积,可吹牛的內(nèi)容都是我干的筐骇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼桶癣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拥褂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起牙寞,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饺鹃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后间雀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體悔详,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年惹挟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茄螃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡连锯,死狀恐怖归苍,靈堂內(nèi)的尸體忽然破棺而出用狱,到底是詐尸還是另有隱情,我是刑警寧澤拼弃,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布夏伊,位于F島的核電站,受9級(jí)特大地震影響吻氧,放射性物質(zhì)發(fā)生泄漏溺忧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一盯孙、第九天 我趴在偏房一處隱蔽的房頂上張望鲁森。 院中可真熱鬧,春花似錦振惰、人聲如沸歌溉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)研底。三九已至埠偿,卻和暖如春透罢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冠蒋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工羽圃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抖剿。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓朽寞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親斩郎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脑融,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 以下內(nèi)容來(lái)自組內(nèi)分享,如有侵權(quán)缩宜,請(qǐng)聯(lián)系作者刪除肘迎。目錄: 什么是Flutter? Flutter環(huán)境配置 如何創(chuàng)建一...
    南風(fēng)_001閱讀 845評(píng)論 0 0
  • 以ADB為例 , 其實(shí)就是在終端輸入下面一句shell命令就ok: 當(dāng)然還沒(méi)完, 以上操作確實(shí)達(dá)到了修改環(huán)境變量的...
    三也視界閱讀 559評(píng)論 0 1
  • iOS 客戶端接入 Flutter 實(shí)踐 官方混編文檔 https://github.com/flutter/fl...
    ForestSen閱讀 21,406評(píng)論 29 95
  • 這里以macOS為開(kāi)發(fā)環(huán)境搭建锻煌,windows本人沒(méi)用妓布,有需要可自行百度。 一.開(kāi)發(fā)環(huán)境搭建 1.更改鏡像 國(guó)內(nèi)f...
    FuWees閱讀 5,700評(píng)論 0 4
  • 我想到外面走走 騎上自行車(chē)飛奔 我想放開(kāi)雙手飛鳥(niǎo)一般飛呀 到湖面停留 我穿過(guò)了密密麻麻的林蔭小道 道上只有一輛自行...
    之何方閱讀 357評(píng)論 0 3