-
靜態(tài)成員
使用static關(guān)鍵字來(lái)實(shí)現(xiàn)類級(jí)別的變量和函數(shù)
靜態(tài)成員不能訪問(wèn)非靜態(tài)成員,非靜態(tài)成員可以訪問(wèn)靜態(tài)成員
類中的常量需要使用static const聲明
訪問(wèn)靜態(tài)成員
Page.scrollDown();
查看全部 -
初始化列表
跟語(yǔ)法糖一樣是在構(gòu)造方法之前運(yùn)行
使用逗號(hào)分隔初始化表達(dá)式
初始化列表用于設(shè)置final變量的值
class?Person?{ ??String?name; ??int?age; ??final?String?gender; ??Person(this.name,?this.age,?this.gender); ??Person.withMap?(Map?map)?:?gender?=?map["gender"]{ ????this.name?=?map["name"]; ????this.age?=?map["age"]; ??} }
?Person.withMap?(Map?map)?:this.name?=?map["name"], ????????this.age?=?map["age"],gender?=?map["gender"]{ ??} }
查看全部 -
工廠構(gòu)造方法
1、工廠構(gòu)造方法類似于設(shè)計(jì)模式中工廠模式
2、在構(gòu)造方法前添加關(guān)鍵字factory實(shí)現(xiàn)一個(gè)工廠構(gòu)造方法
3、在工廠構(gòu)造方法中可返回對(duì)象
class?Logger?{ ??final?String?name; ??static?final?Map<String,?Logger>?_cache?=?<String,?Logger>{}; ??factory?Logger(String?name)?{ ????if?(_cache.containsKey(name))?{ ??????return?_cache[name]; ????}?else?{ ??????final?logger?=?Logger._internal(name); ??????_cache[name]?=?logger; ??????return?logger; ????} ??} ??Logger._internal(this.name); ??void?log(String?msg)?{ ????print(msg); ??} }
查看全部 -
用const聲明對(duì)象,需要有常量構(gòu)造方法
1、如果類是不可變狀態(tài),可以把對(duì)象定義為編譯時(shí)常量
2、使用const聲明構(gòu)造方法,并且所有變量都為final
3、使用const聲明對(duì)象,可以省略
class?Person?{ ??final?String?name; ??final?int?age; ??final?String?gender; ??const?Person?(this.name,?this.age,?this.gender); ??void?work()?{ ????print("Name?is?$name,?Age?is?$age,?He?is?workding"); ??} }
const?person?=??const?Person("Tom",?20,?"M");
查看全部 -
Dart構(gòu)造方法
如果沒有自定義構(gòu)造方法,則會(huì)有個(gè)默認(rèn)構(gòu)造方法
如果存在自定義構(gòu)造方法,則默認(rèn)構(gòu)造方法無(wú)效
構(gòu)造方法不能重載
Dart語(yǔ)法糖
final?String?gender; Person?(this.name,?this.age,?this.gender);
這種寫法是先給屬性賦值再執(zhí)行構(gòu)造方法,所以可以給final屬性賦值是沒問(wèn)題的
想要在Dart使用多個(gè)構(gòu)造方法,則需要命名構(gòu)造方法
1、使用類名.方法的形式實(shí)現(xiàn)
Person.withAge(this.age,?this.gender); Person.sad(this.gender);
查看全部 -
計(jì)算屬性:
計(jì)算屬性的值是通過(guò)計(jì)算而來(lái),本身不存儲(chǔ)值
計(jì)算屬性賦值,其實(shí)是通過(guò)計(jì)算轉(zhuǎn)換到其它實(shí)例變量
void?main(List?args)?{ ??var?rectangle?=?Rectangle(); ??rectangle.height?=?20; ??rectangle.width?=?10; ??print(rectangle.area); ??rectangle.area?=?200; ??print(rectangle.width); } class?Rectangle?{ ??num?width,?height; ??num?get?area?=>?width*height; ??????set?area(value)?{ ????????width?=?value/20; ??????} }
查看全部 -
對(duì)象
聲明new關(guān)鍵字可以省略
類中屬性默認(rèn)生成getter和setter方法
使用final聲明的屬性只有g(shù)etter方法
屬性和方法通過(guò) . 訪問(wèn)?
方法不能被重載
2、類及成員可見性
Dart中的可見性以library(庫(kù))為單位
默認(rèn)情況下,每一個(gè)Dart文件就是一個(gè)庫(kù)
使用下劃線_表示庫(kù)的私有性也可以是屬性和方法, 其它庫(kù)不能再導(dǎo)入使用,只能在當(dāng)前庫(kù)使用
使用import導(dǎo)入庫(kù)
查看全部 -
閉包:
閉包是一個(gè)方法(對(duì)象),閉包定義在其它方法內(nèi)部,閉包能夠訪問(wèn)外部方法內(nèi)的局部變量,并持有其狀態(tài)
void?main(List?args)?{ ??var?func?=?a(); ??func(); ??func(); } a()?{ ??int?count?=?0; ??return?(){ ????print(count++); ??}; }
查看全部 -
匿名方法
(參數(shù)1,參數(shù)2) {
? ?方法體...
return 返回值
}
匿名方法特性
1、可賦值給變量,通過(guò)變量進(jìn)行調(diào)用
2、可在其它方法中直接調(diào)用或傳遞給其它方法
匿名方法不可以直接定義在外部, 要定義在main()方法里
void?main(List?args)?{ ??var?func?=?()?{ ????print("hello"); ??}; ??func(); }
2、
void?main(List?args)?{ ??var?list?=?["h",?"e",?"l",?"l",?"o"]; ??print(listTimes(list,?(str)?{?return?str*3;})); } List?listTimes?(List?list,?String?f(str))?{ ??for?(var?index?=?0;?index?<?list.length;?index?++)?{ ????list[index]?=?f(list[index]); ??} ??return?list; }
List?listTimes2?(List?list)?{ ??var?func?=?(str)?{?return?str?*?3;}; ??for?(var?index?=?0;?index?<?list.length;?index?++)?{ ????list[index]?=?func(list[index]); ??} ??return?list; }
查看全部 -
//Main程序入口 void?main(List?args)?{ var?list?=?["h",?"e",?"l",?"l",?"o"]; print(listTimes(list,?(str)?=>?times(str))); } List?listTimes?(List?list,?String?f(str))?{ ??for?(var?index?=?0;?index?<?list.length;?index?++)?{ ????list[index]?=?f(list[index]); ??} ??return?list; } String?times(str)?{ ??return?str*3; } 2、 //Main程序入口 void?main(List?args)?{ ??Function?p?=?printHello; ??p(); ??var?list?=?[1,2,3]; } printHello()?=>?print("hello");
查看全部 -
設(shè)置默認(rèn)參數(shù)值
1、可使用 = 在可選參數(shù)后添加指定默認(rèn)值
查看全部 -
break 終止當(dāng)前循環(huán)體,若被包含不影響父循環(huán)執(zhí)行
continue 跳過(guò)符合條件的一次循環(huán)
查看全部 -
Map創(chuàng)建
1、創(chuàng)建Map:var lan = {'key' : 'value','key' : 'value','key' : 'value'...}
2、創(chuàng)建不可變Map:?var lan = const {'key' : 'value','key' : 'value','key' : 'value'...}
3、構(gòu)造創(chuàng)建:var lan = new Map();
查看全部 -
List(數(shù)組)創(chuàng)建
1、創(chuàng)建List : var list = [1,2,3];
2、創(chuàng)建不可變的List:var list = const[1,2,34]
3、構(gòu)造創(chuàng)建:var list = new List();
常用方法
insert()插入, 原有數(shù)據(jù)往后順延
indexOf() 查字符所在索引并返回, 沒有找到返回-1
sublist()截取
查看全部 -
布爾型
1、使用bool表示?
2、只有true、false兩個(gè)值
查看全部
舉報(bào)