Dart基礎(chǔ)

目錄

  • 內(nèi)建類型
  • 變量
  • 訪問屬性
  • 常量
  • 函數(shù)
  • 單繼承棠赛,接口實現(xiàn)深碱,混入
  • Future

內(nèi)建類型

  • Number--包含了int 和 double
  • String
  • Boolean
  • List (也被稱為 Array)
  • Map
  • Set
  • Rune (用于在字符串中表示 Unicode 字符)
  • Symbol

變量

1两波、使用var關(guān)鍵字聲明變量

var a = "1111";
print(a.runtimeType)//打印類型
a = 1111;//將num類型賦值給a,編譯不通過

輸出

String

2搭伤、指定類型聲明變量弄唧,即顯式聲明

String a = "1111";
a = 1111;//將num類型賦值給a,編譯不通過

3苗膝、使用任何類的基類Object聲明變量殃恒,包括Null 和 Founction

Object d = "11111";
print(d.runtimeType);
d = 1111;//更改變量 d 的類型
print(d.runtimeType);

輸出

String
int

4植旧、使用 dynamic 聲明變量

dynamic a = "1111";
print(a.runtimeType);
a = 1111;
print(a.runtimeType);

輸出

String
int

=> var 聲明變量時一旦賦值辱揭,類型將無法改變

Q:Object和dynamic的區(qū)別是什么?

A:dynamic的類型是在變的病附,Object就是一個Object類型问窃,比如:

Object a = 1;
a = a + 2;//無法通過編譯
dynamic a = 1;
a = a + 2;//編譯通過,

看下面特殊情形

var a; //聲明變量a,但是并未賦值
print(a.runtimeType);
a = 111;
print(a.runtimeType);
a = "111"; //這行代碼為什么能夠編譯通過呢完沪?
print(a.runtimeType);

輸出

Null
int
String

這里為什么a="111"不會報錯呢域庇?

=>A:這里用var 聲明變量a嵌戈,沒有進行賦值操作,不能確定a的類型听皿,所以編譯器認為他是動態(tài)的dynamic

訪問屬性

公開的和私有的熟呛,前面下劃線表示私有的

var _name = "xiaobao";//私有的
var age = 18;//公開

常量

使用過程中從來不會被修改的變量

void main() {
  const a = 1111;
  a = 222; //無法編譯通過
  final b = 1111;
  b = 2222; //無法編譯通過
  
  const aa1 = AA(); //無法編譯通過
  final aa2 = AA();
}

//自定義類
class AA {}

=>

final 只能被設(shè)置一次

const 在編譯時已經(jīng)確定值

一般使用場景是:

const可以用于定義編譯之前就已經(jīng)確定的值,比如PI=3.141592654

final可以用于需要運行代碼之后才賦值的操作

函數(shù)

構(gòu)造函數(shù)的寫法

class Animal {
  String name;
  int age;
  //寫法1
  Animal(name, age) {
    this.name = name;
    this.age = age;
  }
}
class Animal {
  String name;
  int age;
  //寫法2
  Animal(this.name, this.age);
}
//這里的this.name 相當于在函數(shù)體中進行賦值操作尉姨,這個也適用于一般的函數(shù)
//注意庵朝,寫法1和寫法2 構(gòu)造函數(shù)只能存在一種,無法同時聲明兩個
class Animal {
  String name;
  int age;
  //寫法3
  Animal.noAge(this.name);
  Animal.noName(int age){
    this.age=age;
  }
}
//通過 類名.函數(shù)名 來進行聲明構(gòu)造函數(shù)又厉,可以聲明多個構(gòu)造函數(shù)

非構(gòu)造函數(shù)

函數(shù)可以作為參數(shù)傳遞給其他函數(shù)九府,函數(shù)可以賦值給變量

void main() {
  var func = getAge;
  print(func.runtimeType);
  print(func.call());
}

int getAge() {
  return 11;
}

輸出

() => int
11

函數(shù)的參數(shù)

可選命名參數(shù)---Flutter中的Widgets大多數(shù)都是可選參數(shù)

//可選參數(shù)定義,大括號括起來,可選參數(shù)和位置無關(guān)
setPlay(String withWho,{int playHour, String gameName}) {
  //...
}
//可選參數(shù)的使用--可選參數(shù)必須帶上參數(shù)名覆致,比如這里的playHour或者gameName
setPlay("小花",playHour:2,gameName:"躲貓貓");
setPlay("小花",gameName:"躲貓貓",playHour:2);//這里的gameName和playHour位置可以互換
setPlay("小花",gameName:"躲貓貓");
setPlay("小花");

必傳參數(shù)

//必傳參數(shù)是基于可選參數(shù)做的限制   用 @required 修飾參數(shù)
setPlay(String withWho,{int playHour, @required String gameName}) {
}
setPlay("小花",playHour:2,gameName:"躲貓貓");
setPlay("小花",gameName:"躲貓貓");
setPlay("小花");//這行代碼無法編譯通過侄旬,因為gameName是必傳的參數(shù)

=>一般對于參數(shù)較多的情況,都會用可選參數(shù)大括號進行包裹煌妈,然后再對必傳的參數(shù)加@required修飾儡羔,提高可讀性

可選位置參數(shù)-->將參數(shù)放到 [] 中來標記參數(shù)是可選的:

//聲明
void play(String name, [String address, int age]) {
}
//使用
play("小花","杭州",12);
play("小花","杭州");
play("小花",12);//無法編譯不通過

=>位置參數(shù)[ ],按照位置璧诵,前面的一個參數(shù)必須設(shè)置了值笔链,不能指定參數(shù)名

函數(shù)擴展extension

extension String2Number on String {
  int toInt() {
    return int.parse("111");
  }
}
//使用
"111".toInt();

繼承-extends,接口實現(xiàn)-implements腮猖,混入-mixin

如果同時使用了繼承鉴扫,混入和接口實現(xiàn),并且方法一致澈缺,優(yōu)先級

self>mixin>extends>implement

Future 類似于前端的Promise

getUserInfo().then((value)=>{
    //成功
}).catchError((error)=>{
  //失敗
}).whenComplete(()=>{
  //結(jié)束
})
Future<String> getUserInfo() async{
    return "aaaa";
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坪创,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姐赡,更是在濱河造成了極大的恐慌莱预,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件项滑,死亡現(xiàn)場離奇詭異依沮,居然都是意外死亡,警方通過查閱死者的電腦和手機枪狂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門危喉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人州疾,你說我怎么就攤上這事辜限。” “怎么了严蓖?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵薄嫡,是天一觀的道長氧急。 經(jīng)常有香客問我,道長毫深,這世上最難降的妖魔是什么吩坝? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮哑蔫,結(jié)果婚禮上钾恢,老公的妹妹穿的比我還像新娘。我一直安慰自己鸳址,他們只是感情好瘩蚪,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稿黍,像睡著了一般疹瘦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巡球,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天言沐,我揣著相機與錄音,去河邊找鬼酣栈。 笑死险胰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的矿筝。 我是一名探鬼主播起便,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窖维!你這毒婦竟也來了榆综?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铸史,失蹤者是張志新(化名)和其女友劉穎鼻疮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琳轿,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡判沟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了崭篡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挪哄。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖媚送,靈堂內(nèi)的尸體忽然破棺而出中燥,到底是詐尸還是另有隱情寇甸,我是刑警寧澤塘偎,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布疗涉,位于F島的核電站,受9級特大地震影響吟秩,放射性物質(zhì)發(fā)生泄漏咱扣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一涵防、第九天 我趴在偏房一處隱蔽的房頂上張望闹伪。 院中可真熱鬧,春花似錦壮池、人聲如沸偏瓤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厅克。三九已至,卻和暖如春橙依,著一層夾襖步出監(jiān)牢的瞬間证舟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工窗骑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留女责,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓创译,卻偏偏與公主長得像抵知,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子软族,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355