本文首發(fā)在公眾號(hào) Flutter那些事 ,歡迎大家多多關(guān)注。
成都創(chuàng)新互聯(lián)公司成立與2013年,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元平邑做網(wǎng)站,已為上家服務(wù),為平邑各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18982081108
工具安裝:
Flutter基礎(chǔ)篇:
Flutter進(jìn)階篇:
Dart語(yǔ)法基礎(chǔ)篇:
Dart語(yǔ)法進(jìn)階篇:
說(shuō)明:本文中的所有函數(shù)的引用在 main 函數(shù)中:
這里的執(zhí)行結(jié)果是:
Futue直接new就可以了。我這里沒(méi)有具體的返回?cái)?shù)據(jù),所以就用匿名函數(shù)代替了, Future future = new Future(() = null); 相當(dāng)于 FutureNull future = new Future(() = null); 泛型如果為null可以省略不寫(xiě),為了便于維護(hù)和管理,開(kāi)發(fā)中建議加上泛型。
輸出結(jié)果是:
future里面有幾個(gè)函數(shù):
then :異步操作邏輯在這里寫(xiě)。
whenComplete :異步完成時(shí)的回調(diào)。
catchError :捕獲異?;蛘弋惒匠鲥e(cuò)時(shí)的回調(diào)。
因?yàn)檫@里面的異步操作過(guò)程中沒(méi)有遇到什么錯(cuò)誤,所以catchError回調(diào)不會(huì)調(diào)用。
我們可以看到執(zhí)行結(jié)果是:
我們可以看到輸出結(jié)果是: 2 1 3 和我們創(chuàng)建Future對(duì)象的先后順序完全一致。
我們可以看到結(jié)果為 1 2 3 ,和我們調(diào)用then的先后順序無(wú)關(guān)。:
當(dāng)then回調(diào)函數(shù)里面還有then回調(diào)的時(shí)候,這時(shí)候的流程跟前面就不太一樣了,也是一個(gè)大坑,也是面試經(jīng)常會(huì)被問(wèn)到的一個(gè)知識(shí)點(diǎn)。
我們可以看到執(zhí)行結(jié)果如下:
結(jié)果還是一樣的:
運(yùn)行結(jié)果是:
這里再次證明了上面我的猜想: 執(zhí)行順序和和創(chuàng)建Future的先后順序有關(guān),如果有多個(gè)then嵌套執(zhí)行,先執(zhí)行外面的then,然后執(zhí)行里面的then。
執(zhí)行結(jié)果如下,我們可以看到then內(nèi)部創(chuàng)建的Future要等到then執(zhí)行完了,最后再去執(zhí)行的:
根據(jù)上文總結(jié)的特點(diǎn),我們可以不用運(yùn)行也能推斷出輸出結(jié)果:
為了驗(yàn)證我們的猜想,我們打印一下輸出結(jié)果,果然我們的證明是正確的。
我們重點(diǎn)看看 then函數(shù)的文檔說(shuō)明:
then 注冊(cè)在 Future 完成時(shí)調(diào)用的回調(diào)。
當(dāng)這個(gè) Future 用一個(gè) value 完成時(shí),將使用該值調(diào)用 onValue 回調(diào)。
如果 Future 已經(jīng)完成,則不會(huì)立即調(diào)用回調(diào),而是將在稍后的 microtask(微任務(wù)) 中調(diào)度。
如果回調(diào)返回 Future ,那么 then 返回的 future 將與 callback 返回的 future 結(jié)果相同。
onError 回調(diào)必須接受一個(gè)參數(shù)或兩個(gè)參數(shù),后者是[StackTrace]。
如果 onError 接受兩個(gè)參數(shù),則使用錯(cuò)誤和堆棧跟蹤時(shí)調(diào)用它,否則僅使用錯(cuò)誤對(duì)象時(shí)候調(diào)用它。
onError 回調(diào)必須返回一個(gè)可用于完成返回的future的值或future,因此它必須是可賦值給 FutureOr R 的東西。
返回一個(gè)新的 Future ,該 Future 是通過(guò)調(diào)用 onValue (如果這個(gè)Future是通過(guò)一個(gè)value完成的)或' onError (如果這個(gè)Future是通過(guò)一個(gè)error完成的)的結(jié)果完成的。
如果調(diào)用的回調(diào)拋出異常,返回的 future 將使用拋出的錯(cuò)誤和錯(cuò)誤的堆棧跟蹤完成。在 onError 的情況下,如果拋出的異常與 onError 的錯(cuò)誤參數(shù)“相同(identical)”,則視為重新拋出,并使用原始堆棧跟蹤替代
如果回調(diào)返回 Future ,則 then 返回的 Future 將以與回調(diào)返回的 Future 相同的結(jié)果完成。
如果未給出 onError ,并且后續(xù)程序走了剛出現(xiàn)了錯(cuò)誤,則錯(cuò)誤將直接轉(zhuǎn)發(fā)給返回的 Future 。
在大多數(shù)情況下,單獨(dú)使用 catchError 更可讀,可能使用 test 參數(shù),而不是在單個(gè) then 調(diào)用中同時(shí)處理 value 和 error 。
請(qǐng)注意,在添加監(jiān)聽(tīng)器(listener)之前, future 不會(huì)延遲報(bào)告錯(cuò)誤。如果第一個(gè) then 或 catchError 調(diào)用在 future 完成后發(fā)生 error ,那么 error 將報(bào)告為未處理的錯(cuò)誤。
你要的基本上都有了,各種閥的名稱(chēng)、部件,相關(guān)用語(yǔ)。
如果你要各種閥門(mén)的解釋?zhuān)竭@里
CQ螺紋球閥 CQ Thread Ball Valves
L形三通式 L-pattern three way
T形三通式 T-pattern three way
安全閥 Safety valve
暗桿閘閥 Inside screw nonrising stem type gate valve
百葉窗; 閘板 shutter
百葉窗式擋板 louver damper
擺閥式活塞泵 swing gate piston pump
保溫式 Steam jacket type
報(bào)警閥 alarm valve
報(bào)警閥; 信號(hào)閥; 脈沖閥 sentinel valve
背壓調(diào)節(jié)閥 back pressure regulating valve
背壓率 Rate of back pressure
本體閥桿密封 body stem seal
波紋管閥 Bellows valves
波紋管密封閥 bellow sealed valve
波紋管密封式 Bellows seal type
波紋管平衡式安全閥 Bellows seal balance safety valve
波紋管式減壓閥 Bellows reducing valve
波紋管式減壓閥 Bellows weal reducing valve
薄膜 thin film
薄膜; 隔膜 diaphragm
薄膜式減壓閥 Diaphragm reducing valve
薄型閘閥 Thin Gate Valves
不封閉式 Unseal type
槽車(chē)球閥 Tank Lorry Ball Valves
顫振 Flutter
常閉式 Normally closed type
常開(kāi)式 Normally open type
超低溫閥門(mén) Cryogenic valve
超高壓閥門(mén) Super high pressure valve
超過(guò)壓力 Overpressure of a safety valve
襯膠隔膜閥 rubber lined diaphragm
襯膠截止閥 rubber lined globe valve
垂直板式蝶閥 Vertical disc type butterfly valve
磁耦合截止閥 Magnetic Co-operate Globe Valves
帶補(bǔ)充載荷的安全閥 Supplementary loaded safety valve
帶輔助裝置的安全閥 Assisted safety valve
單閥碟雙面平行密封閘閥 parallel single disk gate valve
單口排氣閥 Single Opening Exhaust Valves
單向閥 Non-return Valve
單閘板 Single gate disc
單閘板平板閘閥 Single Disc Flat Gate Valves
彈簧薄膜式減壓閥 Spring diaphragm reducing valve
彈簧式安全閥 Direct spring loaded safety valve
彈簧座 Spring plate
彈性閘板 Flexible gate disc
當(dāng)量計(jì)算排量 Equivalent calculated capacity
擋板 damper
導(dǎo)閥 Pilot valve
導(dǎo)向套 Valve guide disc guide
低溫閥門(mén) Sub-zero valve
低壓閥門(mén) Low pressure valve
底閥 bottom valve
底閥 Foot valve
電磁動(dòng)裝置 Eletro magnetic actuator
電磁閥 magnetic valve
電磁閥 solenoid valve
電磁-液動(dòng)裝置 Eletro magnetichydraulic actuator
電動(dòng)閥 mortor operated valve
電動(dòng)閥 motorized valve
電動(dòng)截止閥 Electric Actuated Stop Valves
電動(dòng)平行式雙閘板閘板 Electric Double Disk Parallel Gate Valves
電動(dòng)楔式閘閥 Electric Actuated Wedge Gate Valves
電動(dòng)裝置 Electric actuator
電-液動(dòng)裝置 Eletro hydraulic actuator
電液伺服閥 electro-hydraulic servovalve
調(diào)節(jié)彈簧 Regulation spring
調(diào)節(jié)閥 adjusting valve
調(diào)節(jié)閥 control valve
調(diào)節(jié)閥 regulating valve
調(diào)節(jié)螺套 Adjusting bolt Adjusting screw
調(diào)節(jié)圈 Adjusting ring
蝶板 Disc
蝶閥;瓣閥 butterfly valve
蝶閥;瓣閥;拍門(mén);鉸鏈閥 flap valve
蝶式緩沖止回閥 Butterfly Type Non-slam Check
蝶式止回閥 Butterfly swing check valve
定比減壓閥 Proprutioning pressure reducing valve
定差減壓閥 Fixed differential reducing valve
定值減壓閥 Fixed pressure reducing valve
動(dòng)態(tài)特性 Dynamic characteristics
對(duì)焊連接閥 Buttwelding valves
對(duì)夾蝶板閥 Wafer plate valves
對(duì)夾式襯膠蝶閥 Wafer Type Butterfly Valves with Rubber Itning
對(duì)夾式閥門(mén) Clamp valves
對(duì)夾式止回閥 Wafer Check Valves
額定排量 Certified capacity
額定排量系數(shù) Derated coefficient of discharge
二通閥 Two-way valves
閥 valve
閥板 valve deck plate
閥板 valve plate
閥板式活塞泵 valve deck plate type piston pump
閥板式活塞泵 valve plate type piston pump
閥瓣 Disc
閥操縱桿 valve operating rod
閥痤槽 valve seat recess
閥擋 valve grid
閥擋 valve positioner
閥擋 valve stop
閥導(dǎo)桿 valve tail rod
閥導(dǎo)向器 valve guide
閥蓋 bonnet
閥蓋襯套 bonnet bush
閥蓋墊片 bonnet gasket
閥桿 stem
閥桿 valve rod
閥桿 valve spindle
閥桿端部尺寸 Dimmension of valve stem end
閥桿環(huán) stem ring
閥桿螺母 Yoke bushing Yoke nut
閥桿填料 stem packing
閥桿頭部尺寸 Dimension of valve stem head
閥簧 valve spring
閥簧壓板 valve spring plate
閥控水錘泵 valve-controlled hydraulic ram
閥框架 valve yoke
閥門(mén) Valve
閥門(mén)傳動(dòng)裝置 valve bandle set
閥門(mén)和管件 Valves and Fittings
閥門(mén)盤(pán)根 valve packing
閥門(mén)手柄 valve handle
閥盤(pán) disc
閥盤(pán) valve disc
閥片 Disc
閥球 valve ball
閥驅(qū)動(dòng)臂 valve driving arm
閥驅(qū)動(dòng)臂 valve motion arm
閥式活塞 valve type piston
閥式活塞 valve type bucket
閥室式活塞泵 valve box type piston pump
閥室式活塞泵(美) valve pot type piston pump
閥抬起裝置 valve lifting device
閥體 body
閥體 valve body
閥箱 valve box
閥箱 valve cage
閥箱 valve chest
閥箱;閥限位器 valve guard
閥箱蓋 cover for valve box
閥箱蓋 valve box cover
閥箱式活塞泵(美) turret type piston pump
閥形活塞泵 valve type piston pump
閥座 Seat ring
閥座 valve carrier
閥座 valve seat(body seat)
閥座;閥盤(pán) valve seat
閥座環(huán) seat ring
閥座密封嵌條 sealing strip for valve seat
法蘭 flange
法蘭堵頭 blind flange
法蘭端 flange end
法蘭接頭 flange joint
法蘭連接緊固件(雙頭螺栓和螺帽) flange bolting
法蘭密封面,法蘭面 flange facing
法蘭面加工 flange facing finish
法蘭球閥 Flange Ball Valves
翻板閥 Flap
反沖盤(pán) Disc holder
反向作用式減壓閥 Reverse acting reducing valve
反向作用式減壓閥 Reverse acting reducing valve
放空閥 emptying valve
放氣閥 air vent valve;vent valve
放氣閥;排氣閥 air evacuation valve
放泄閥 escape valve
分置閥室式活塞泵 separate valve box type piston pump
分置閥室式活塞泵(美) side pot type piston pump
封閉式 Seal type
浮動(dòng)式球閥 Float ball valve
浮球 Ball float
浮球閥 Float Valve
浮球式疏水閥 Ball float steam trap
浮球式疏水閥 Free Float Type Steam Trap
浮桶 Bucket float
浮桶式疏水閥 Open bucket steam trap
輔助(副)閥 Auxiliary valves
負(fù)荷率 Rate of load condensate
附加背壓力 Superimposed back pressure
復(fù)位彈簧 Returnning spring
杠桿式 Lever type
杠桿式安全閥 Lever and weight loaded safety valve
杠桿式減壓閥 Lever reducing valve
高溫閥門(mén) High temperature valve
高壓閥門(mén) High pressure valve
格蘭密封 gland
隔離閥 isolating valve
隔膜 Diaphragm
隔膜閥 diaphragm valve
隔膜式控制閥 diaphragm operated comtrol valve
工作背壓 Operating back pressure
工作溫度 Operating temperature
工作溫度 Working temperature
工作壓差 Operting differential pressure
工作壓力 Operating pressure
工作壓力 Working pressure
公稱(chēng)通徑 Nominal diameter
公稱(chēng)壓力 Nominal pressure
固定式球閥 Fixed ball valve
關(guān)閉壓力 Lockup pressure
關(guān)閥過(guò)冷度 Subcooled temperature of close valve
關(guān)閥溫度 Closing valve temperature
管道安全閥 Piping Safety Valves
過(guò)冷度 Subcoold temperature
過(guò)流閥(或節(jié)流閥) Restrictor Valves
喉徑 Throat diameter
滑閥 slide valve
滑閥式回轉(zhuǎn)活塞泵 rotary piston pump with slide gate
滑閥型轉(zhuǎn)子泵 eccentric rotary pump with sliding sleeve
環(huán)形閥 annular valve
環(huán)形閥 double beat valve
換向閥 selector valve
換向閥 shuttle valve
回轉(zhuǎn)滑閥活塞泵 piston pump with rotary gate
回座壓力 Re-seating pressure of a safety valve
活塞昵減壓閥 Piston reducing valve
活塞式閥 piston valve
活塞式閥;柱塞式閥 plunger valve
活塞式減壓閥 Piston reducing valve
減速閥 Deceleration valves
減壓比 Pressure reducing ratio
減壓閥 pressure reducing valve
漿液閥 Parallel Slide Valves
角閥 Angle Valve
角閥 isolation valve angle configuration
角式 Angie type
角式節(jié)流閥 Angle Throttle Valves
角式截止閥 Angle Stop valves
鉸鏈閥;片狀閥 flapper valve
節(jié)流閥 throttle valve
節(jié)流閥 choke valve
節(jié)流閥;節(jié)流 throttle
結(jié)構(gòu)長(zhǎng)度 Face-to-face dimension ;End-to-end dimension; Face-to-centre dimension
結(jié)構(gòu)形式 Type of construction
截止閥 Globe valve
截止閥 Shut-off Valve
截止閥;關(guān)斷閥 shut-off valve
截止式隔膜閥 Globe diaphragm valve
緊急切斷閥 Emergeny Cut-off Valves
進(jìn)氣閥 air intake valve
進(jìn)水閥;進(jìn)口閥門(mén) inlet valve
靜態(tài)特性 Static characteristics
靜態(tài)特性偏差 Static characteristics derivation
開(kāi)閥過(guò)冷度 Subcooled temperature of open valve
開(kāi)閥溫度 Opening valve temperature
開(kāi)啟高度 Lift
殼體試驗(yàn) Shell test
殼體試驗(yàn)壓力 Seal test pressure
空氣閥門(mén) Air valves
快速排污閥 Quick Draining Valves
類(lèi)型 Type
冷凝結(jié)水排量 Cold condensate capacity
冷態(tài)試驗(yàn)差壓力 Cold differential test pressure
理論排量 Theoretical flowing capacity
連接槽尺寸 Dimension of connecting channel
連接尺寸 Conncetion cimension
連接形式 Type of connection
簾面積 Curtain area
流道面積 Flow area
流道直徑 Flow diameter
流量孔板 flow orifice plate
流量控制閥 flow control valve
流量特性 Flow characteristics
流量特性偏差 Flow characteristics derivation
漏汽量 Steam loss
脈沖式疏水閥 Impulse steam trap
密封面 Sealing face
密封試驗(yàn) Seal test
密封試驗(yàn)壓力 Seal test pressure
明桿平行式雙閘板閘板 Double Disk Parallel Gate Valves
明桿閘閥 Outside screw stem rising through handwheel type gate valve
膜片 Diaphragm
內(nèi)壓自封 Pressure seat
逆止閥;止回閥 check valve
逆止閥;止回閥 non-return valve
逆止閥;止回閥;單向閥 check valve
排放背壓力 Brilt-up back pressure
排放壓力 Relieving pressure
排灰閥 Ash valves
排量系數(shù) Coefficient of discharge
排氣閥 air release valve
排氣閥 Exhaust valves
排氣閥 Vent Valve
排水閥 Drainage valves
排水溫度 Temperature at discharging condensate
排污閥 blowdown valve
排污箱(閥) Waste Valves
排渣閘閥 Scum Gate Valves
盤(pán)閥 moushroom valve
盤(pán)狀閥 plate valve
旁路閥 by pass valve
配汽活塞閥缸套 piston valve line
噴射閥 injection valve
噴射閥 sprayer valve
噴水閥 spray water valve
頻跳 Chatter
平衡閥 Balance valves
平衡式 Balance type
平行式閘閥 Parallel gate valve Parallel slide valve
啟閉件 Disc
啟閉壓差 Blowdown of a safety valve
起始升程 Commencement of lift
氣動(dòng)裝置 Pneumatic actuator
氣閥搖臂 valve arm
氣-液動(dòng)裝置 Pneumatic-hydraulic actuator
潛水電泵(排污泵) Submerged Motor Pumps
切斷閥;截止閥 block valve;shut-off valve;stop valve
切斷式止回閥 stop check valve
切換閥;多向閥 changeover valve
球、球芯 Ball
球閥 Ball valve
球閥 globe valve
球體 Ball
全啟式安全閥 Fall lift safety valve
熱凝結(jié)水排量 Hot condensate capacity
入口隔離門(mén) suction isolating valve
塞子 Plug
三通閥 three-way isolating valve
三通閥 three-way valve
三通式 Three way type
上密封 Back seat
上密封試驗(yàn) Back seal test
滲漏量 Leckage
升降立式止回閥 Vertical lift check valve
升降式止回閥 Lift check valve
適用介質(zhì) Suitable medium
適用溫度 Suitable temperature
手搖油泵(閥) Manual Oil Pumps Valves
疏水閥 drain valve
雙金屬片式疏水閥 Bimetal elements steam trap
雙口排氣球 Double Opening Exhaust Valves
雙聯(lián)彈簧式安全閥 Duplex safety valve
雙閘板 Double gate disc
雙閘板平板閘閥 Double Disc Flat Gate Valves
水封閘閥 Water Seal Gate Valves
水力噴射器(真空泵) Vacuum Pumps
伺服閥 servovalve
填料 Packing
填料墊 Packing seat
填料函 Stuffing
填料式旋塞閥 Gland packing plug valve
填料箱 Stuffing box
填料壓蓋 Gland
通氣閥 breather valve
通氣閥;呼吸器 breather
通用閥門(mén) General valve
吐出閥;排出閥 discharge valve
吐出閥限位器 delivery valve guard
微啟式安全閥 Low lift safety valve
微阻緩閉止回閥 Tiny Drag Slow Shut Check Valves
吻合度 Percent of contact area
蝸輪傳動(dòng)蝶閥 Butterfly Valves with Gear Actuator
蝸輪傳動(dòng)裝置 Wormgear actuator
屋脊式隔膜閥 Weir diaphragm valve
無(wú)閥泵 valveless pump
無(wú)閥隔膜泵 valveless diaphragm pump
無(wú)閥振動(dòng)泵 valveless vibration pump
無(wú)負(fù)荷漏汽量 No-load steam loss
無(wú)負(fù)荷漏汽率 Rate of no-load steam loss
吸(抽)氣閥 Aspirating valves
吸入閥 suction valve
吸入閥限位器 suction valve guard
先導(dǎo)式安全閥 Pilot operated safety valve
先導(dǎo)式液壓閥 Pilot-operated reducing valve
相對(duì)靜偏差 Relative static characteristics derivation
相對(duì)流量特性偏差 Relative flow characteristics derivation
相對(duì)壓力特性偏差 Relative pressure characteristics derivation
銷(xiāo)軸 Hinge pin
楔式閘閥 Wedge gate valve
斜板式蝶閥 Indined disc butterfly valve
泄料(放空,排污)閥 Blowdown valves
泄壓閥 Decompression valves
泄壓閥 pressure release valve
泄壓閥;安全閥 relief valve
卸荷式減壓閥 Balanced reducing valve
型號(hào) Type Model
旋啟多瓣式止回閥 Multi-disc swing foot valve
旋啟式止回閥 Swing check valve
旋啟雙瓣式底閥 Double disc swing foot valve
旋塞閥 Cock
旋塞閥 plug valve
壓力(増壓)閥 Pressure valve
壓力調(diào)節(jié)閥;壓力控制閥 pressure controlled valve
壓力特性 Pressure characteristics
壓力特性偏差 Pressure characteristics derivation
壓力增長(zhǎng)系數(shù) Pressure increasing ratio
搖桿 Arm
液動(dòng)裝置 Hydraulic actuator
液化氣管件 LPG Pipe Fitting
液下泵 Under Water Pumps
液壓執(zhí)行器 hydraulic actuator
儀表針形截止閥 Meter Needle Type Globe Valves
溢流閥 overflow valve
翼形閥;錐形閥 wing valve
油封式旋塞閥 Lubricated plug valve
有閥翼板 double acting wing
有閥翼板 wing with valve
有負(fù)荷漏汽量 Load steam loss
有負(fù)荷漏汽率 Rate of load steam loss
圓板閥;圓盤(pán)閥 disc valve
圓盤(pán)式疏水閥 Shemostatic team trap
圓柱齒輪傳動(dòng)裝置 Cylindrical gear actuator
圓錐齒輪傳動(dòng)裝置 Conical gear actuator
閘板 Wedge disc
閘板式隔膜閥 Wedge diaphragm valve
閘閥 gate valve
閘閥 sluice valve
針形閥 Pintle valve ; Needle valve
真空破壞閥 vacuum breaker valve
蒸汽疏水閥 Automatic steam trap Trap
整定壓力 Set pressure
正向作用式減壓閥 Direct acting reducing valve
支架 Yoke
直接載荷式安全閥 Direct loaded safety valve
直接作用式減壓閥 Direct-acting reducing valve
直流式 Y-globe type
直流式截止閥 Oblique Stop Valve
直通單向閥 inline check valve
直通單向閥 straightway check valve
直通閥 Throughway Valve
止回閥 Check Valve
止回閥;回流閥 reflux valve
制動(dòng)閥 Brake valves
中壓閥門(mén) Middle pressure valve
鐘形浮子式疏水閥 Inverted bucket steam trap
鐘形罩 Inverted bucket
軸套 Axis Guide
主閥 Main valve
主要外形尺寸 Prime out-form dimensions
主要性能參數(shù) Specifeca tion speeification
注液漏斗閥 Priming Tundish Valve
柱塞閥 Plunger valve
柱塞截止閥 Plunger Globe Valve
柱塞型擺動(dòng)閥 rocking plunger valve
撞擊手輪 Impact handwheel
錐形閥;翼形閥 conical valve
自動(dòng)循環(huán)閥 Automatic Recirculation Valve
組合閥 Combination valves
最大過(guò)冷度 Maximum subcoold temperature
最大流量 Maximum flow rate
最大壓差 Maximum differential pressure
最低工作壓力 Minimum operating pressure
最高背壓率 Maximum rate of back pressure
最高工作背壓 Maximum operating back pressure
最高工作溫度 Maximum operating temperature
最高工作壓力 Maximum operating pressure
最高排水溫度 Maximum temperature at discharging
最高允許溫度 Maximum allwable temperature
最高允許壓力 Maximum allowable pressure
最小過(guò)冷度 Minimum subcooled temperature
最小壓差 Minimum differntial pressure
breaststroke:蛙泳;back stroke:仰泳;side stroke:側(cè)泳;butterfly stroke:蝶泳;dolphin butterfly stroke:海豚式蝶泳;Dog Paddle:狗爬式游泳;Medley swimming:混合泳。
游泳裝備的詞語(yǔ):swimming cap 游泳帽;swimsuit 泳衣;bikini 比基尼泳衣;swimming goggles 游泳鏡;swimming trunks 泳褲;kickboard 踢水板;nose clip 鼻夾;web-footed 腳蹼。
擴(kuò)展資料:
游泳注意事項(xiàng):
1、必須在家長(zhǎng)(監(jiān)護(hù)人)的帶領(lǐng)下去游泳。單身一人去游泳最容易出問(wèn)題,如果你的同伴不是家長(zhǎng)(成年人),在出現(xiàn)險(xiǎn)情時(shí),很難保證能夠得到妥善的救助。(小孩忌)
2、身體患病者不要去游泳。中耳炎、心臟病、皮膚病、肝、腎疾病、高血壓、癲癇、紅眼病等慢性疾病患者,及感冒、發(fā)熱、精神疲倦,身體無(wú)力都不要去游泳。
因?yàn)樯鲜霾∪藚⒓佑斡具\(yùn)動(dòng),不但容易加重病情,而且還容易發(fā)生抽筋、意外昏迷,危及生命。傳染病患者易把病傳染給別人。另外女同學(xué)月經(jīng)期間均不宜游泳。
參考資料來(lái)源:百度百科-游泳
本文面向 Flutter 初學(xué)者,旨在用易懂的方式帶大家入門(mén)。除了 Flutter 代碼,還會(huì)介紹到語(yǔ)法、原理、特性等基礎(chǔ)知識(shí)。相信本文能幫助你學(xué)習(xí)和理解 Flutter。
我們先看一下目前的一些跨平臺(tái)方案,從前端渲染的角度來(lái)分類(lèi)的話(huà),大致可以分為以下幾種方案。
WebView 渲染
這種方案就很好理解,現(xiàn)在很多項(xiàng)目都會(huì)嵌入 H5 的頁(yè)面。就是用 JavaScript 等前端技術(shù)進(jìn)行開(kāi)發(fā),在客戶(hù)端上用 WebView 來(lái)進(jìn)行渲染。微信小程序目前使用的就是這種方案。
它的優(yōu)點(diǎn)很明顯,使用成熟的前端技術(shù)進(jìn)行開(kāi)發(fā),學(xué)習(xí)成本低,開(kāi)發(fā)效率高,并且支持動(dòng)態(tài)發(fā)布代碼。
但缺點(diǎn)也很明顯,在性能體驗(yàn)上,和原生還是存在較大差距的。
原生控件渲染
既然 WebView 的性能不夠好,于是就有了使用原生控件進(jìn)行渲染的方案。這種方案,同樣也是使用 JavaScript 開(kāi)發(fā),區(qū)別是它最終是調(diào)用原生控件進(jìn)行渲染的。這種方案的代表是 Facebook 的 React Native。
由于使用原生控件進(jìn)行渲染,性能體驗(yàn)也會(huì)更接近原生。但也只是更接近,和原生還是有差距的,因?yàn)樗枰l繁的進(jìn)行 JavaScript 和原生之間的通信,這個(gè)通信效率是比較低的。
另外,由于需要適配各個(gè)平臺(tái)的控件,那就有可能出現(xiàn),系統(tǒng)控件更新了,而框架本身還沒(méi)有更新,由此產(chǎn)生了一些問(wèn)題。換句話(huà)說(shuō),這種方案是受到原生控件限制的。
繪圖引擎渲染
接下來(lái)就是主角了。
在前端,如果完全不使用原生控件,我們可以通過(guò)系統(tǒng)的繪圖 API 繪制出一個(gè)用戶(hù)界面。從這個(gè)角度出發(fā),可以在各個(gè)平臺(tái)使用一個(gè)統(tǒng)一接口的繪圖引擎來(lái)進(jìn)行界面繪制,這個(gè)引擎最終調(diào)用的是系統(tǒng)的 API 繪制的。這樣的話(huà),它的性能可以做到接近原生,并且又不受原生控件的限制,在不同平臺(tái)上能夠做到 UI 統(tǒng)一。
Flutter 就是這樣的一個(gè)開(kāi)發(fā)框架。
一個(gè)跨平臺(tái) UI 解決方案
Flutter 是由 Google 開(kāi)發(fā)的,一個(gè)跨平臺(tái) UI 解決方案。換句話(huà)說(shuō),它原則上只管 UI 的問(wèn)題,如果涉及到平臺(tái)本身的一些功能,比如調(diào)用藍(lán)牙、攝像頭,一般還是需要原生代碼去操作。但現(xiàn)在也會(huì)有一些第三方庫(kù)幫我們解決這些問(wèn)題。
繪圖引擎 Skia
Flutter 使用 Skia 作為它的繪圖引擎。Skia 已經(jīng)被 Google 收購(gòu),目前很多 Google 旗下的產(chǎn)品都是用 Skia 繪制的,包括 Android。
Android 內(nèi)置了 Skia,但 iOS 沒(méi)有,所以在打 iOS 安裝包的時(shí)候,會(huì)把 Skia 一起打進(jìn)去。這就導(dǎo)致了,用同一份 Flutter 代碼打包之后,iOS 的包要比 Android 的包大一些。
開(kāi)發(fā)語(yǔ)言 Dart
Flutter 使用的開(kāi)發(fā)語(yǔ)言,叫 Dart。Dart 也是 Google 自家的,它是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,從它身上會(huì)看到一些其他開(kāi)發(fā)語(yǔ)言的影子。學(xué)習(xí)起來(lái)難度不大的。
前面講跨平臺(tái)方案的時(shí)候,可以發(fā)現(xiàn)別的方案基本都是用 JavaScript 作為開(kāi)發(fā)語(yǔ)言的,但為什么 Flutter 不用?就因?yàn)?Dart 是谷歌自家的嗎?這個(gè)問(wèn)題先留著,我們后面會(huì)提到。
這里部分就簡(jiǎn)單點(diǎn)帶過(guò)了,具體的搭建流程可以在官網(wǎng)查看:
主要的搭建步驟如下:
下載 Flutter SDK
官網(wǎng)下載地址:
由于在國(guó)內(nèi)訪(fǎng)問(wèn)可能受限,官方為中國(guó)開(kāi)發(fā)者搭建了鏡像:
更新環(huán)境變量
解壓后,將 flutter\bin 的全路徑添加到環(huán)境變量 PATH 中。
安裝開(kāi)發(fā)工具
理論上,任何文本編輯器都可以用來(lái)開(kāi)發(fā) Flutter 應(yīng)用,但推薦的開(kāi)發(fā)工具是 Android Studio、IntelliJ 以及 VS Code。因?yàn)樵谶@些開(kāi)發(fā)工具上,可以安裝官方的 Flutter 和 Dart 插件,得到更好的開(kāi)發(fā)體驗(yàn)。文章里使用 Android Studio 來(lái)演示。
如果你打算開(kāi)發(fā) iOS 應(yīng)用,則還需要安裝 Xcode。
安裝插件
在開(kāi)發(fā)工具的插件設(shè)置中,安裝上面說(shuō)到的 Flutter 和 Dart 插件。Flutter 插件用于支持 Flutter 的運(yùn)行、調(diào)試、熱重載等功能,而 Dart 插件則提供了代碼的輸入校驗(yàn)、代碼補(bǔ)全等功能。
萬(wàn)物始于 Hello World,我們先來(lái)創(chuàng)建一個(gè)顯示 Hello World 的 Flutter 項(xiàng)目。
在 Android Studio 的歡迎頁(yè)面選擇 Start a new Flutter project ,或者通過(guò)菜單欄的 File New New Flutter Project ,創(chuàng)建一個(gè)新的 Flutter 項(xiàng)目。
創(chuàng)建好的項(xiàng)目里面包含了 android 和 ios 兩個(gè)文件夾,它們是標(biāo)準(zhǔn)的 Android 和 iOS 項(xiàng)目。我們的 Flutter 代碼,存放在 lib 文件夾里。項(xiàng)目創(chuàng)建好后,會(huì)默認(rèn)帶一個(gè)計(jì)數(shù)器的示例,我們不管它,把 main.dart 的代碼改成 Hello World:
啟動(dòng)一個(gè)模擬器,或者連上真機(jī),點(diǎn)擊 Run 運(yùn)行一下,就能看這樣一個(gè)界面了:
具體代碼先混個(gè)眼熟就好,具體的后面會(huì)再講到。
在寫(xiě) Flutter 之前,還要先跟大家簡(jiǎn)單介紹一下 Dart 的語(yǔ)法。如果你有 Java 或 JavaScript 的開(kāi)發(fā)經(jīng)驗(yàn),以及面向?qū)ο蟮木幊趟枷?,學(xué)起來(lái)是很快的。
我們可以在 test 文件夾下新建一個(gè) dart 文件,用來(lái)寫(xiě)測(cè)試代碼。
指定類(lèi)型
var
但和 JavaScript 不同的是,以下代碼在 JavaScript 是不會(huì)報(bào)錯(cuò)的,但在 Dart 里會(huì)報(bào)錯(cuò):
Object
如果非要上面這樣寫(xiě),那也可以。把 var 換成 Object 就不報(bào)錯(cuò)了:
和 Java 類(lèi)似,Object 是所有對(duì)象的根基類(lèi)。但是這樣的話(huà),如果想打印一下 num 的字符串長(zhǎng)度,是會(huì)報(bào)錯(cuò)的:
因?yàn)?length 是屬于 String 的,但系統(tǒng)只知道 num 是一個(gè)對(duì)象,并不知道它是一個(gè) String。
dynamic
如果還是非要這樣寫(xiě),那也可以。Dart 有一個(gè)特有的關(guān)鍵字 dynamic,把 Object 改成 dynamic 就不報(bào)錯(cuò)了:
我們運(yùn)行一下這個(gè)文件,可以在控制臺(tái)看到正確打印出了字符串長(zhǎng)度。
函數(shù)
dynamic
在 Dart 里,函數(shù)也是可以不寫(xiě)返回類(lèi)型的,不寫(xiě)的話(huà)會(huì)被當(dāng)做 dynamic 來(lái)處理。這樣的話(huà),函數(shù)的類(lèi)型就是 return 的類(lèi)型,如果沒(méi)有 return 則是 void 類(lèi)型。比如可以這樣:
運(yùn)行之后是能正確打印出字符串長(zhǎng)度的。
用于傳參
Dart 里的函數(shù)也是一個(gè)對(duì)象,所以可以把函數(shù)作為參數(shù)來(lái)傳遞,比如:
可選參數(shù)
在 Dart 的函數(shù)傳參里,有一個(gè)叫可選參數(shù)的概念,我們以文字控件 Text 為例,在源碼里可以看到 Text 的構(gòu)造函數(shù)是這樣的:
首先,在參數(shù)里有一個(gè) data,它是要顯示的文字內(nèi)容,是一個(gè)必填項(xiàng)。而 data 后面的一堆參數(shù),是用一個(gè)大括號(hào)括起來(lái)的,這些參數(shù)就叫做可選參數(shù),意思是這些參數(shù)可傳可不傳。
假如我們要顯示一個(gè)比較長(zhǎng)的文字,又想限制它最多顯示兩行,就可以這樣來(lái)創(chuàng)建一個(gè) Text:
可選參數(shù),在 Flutter 里面用的非常多。
異步
Future
在 Dart 里使用 Future 來(lái)處理異步任務(wù),比如我們現(xiàn)在延時(shí)一秒打印 666,代碼如下:
Future 的語(yǔ)法和 Promise 非常像。任務(wù)執(zhí)行成功會(huì)調(diào)用 then,執(zhí)行失敗會(huì)調(diào)用 catchError,而無(wú)論成功還是失敗,都會(huì)調(diào)用 whenComplete。
async/await
如果你不喜歡上面那種寫(xiě)法,或者是想把異步轉(zhuǎn)成同步,就可以用 async 和 await 這兩個(gè)關(guān)鍵字來(lái)轉(zhuǎn)換。
我們把上面的代碼轉(zhuǎn)換一下,寫(xiě)一個(gè) getString 方法,返回的類(lèi)型是 Future,它會(huì)延時(shí)返回一個(gè)字符串。在 main 函數(shù)后面加上 async 關(guān)鍵字,在 getString() 前面加上 await,代碼如下:
運(yùn)行之后可以看到,能正常延時(shí)一秒后,把字符串打印出來(lái)。這里 getString() 返回的類(lèi)型是 Future,而 await getString() 則是返回了延時(shí)之后返回的字符串。await 要在 async 的函數(shù)里面才能使用。
async 和 await 其實(shí)是一個(gè)語(yǔ)法糖,它最終也是轉(zhuǎn)換成 Future 調(diào)用鏈的形式執(zhí)行的。
接下來(lái)回到 Flutter,F(xiàn)lutter 里最重要的一個(gè)概念是 Widget(下面翻譯作控件)。
在原生開(kāi)發(fā)里面,我們可能會(huì)在界面上區(qū)分,這是一個(gè) View,這是一個(gè) Layout,這是一個(gè) View Controller。但在 Flutter 里面,它們?nèi)紝儆谝粋€(gè)統(tǒng)一的模型 Widget??梢哉f(shuō),在 Flutter 界面里,所有東西都是 Widget。
以前學(xué)面向?qū)ο蟮臅r(shí)候,我們都聽(tīng)過(guò)一句話(huà),叫萬(wàn)物皆對(duì)象。我這里套用一下,在 Flutter 里, 萬(wàn)物皆控件 。
具體有哪些控件,我做了一下簡(jiǎn)單的分類(lèi)。
根控件
所有的控件都屬于 StatefulWidget 或 StatelessWidget 。它們的區(qū)別是,StatefulWidget 擁有狀態(tài) State ,而 StatelessWidget 沒(méi)有。
StatefulWidget
當(dāng)一個(gè)控件是可變的時(shí)候,就要使用 StatefulWidget 來(lái)構(gòu)建。StatefulWidget 本身不可變,但它持有的狀態(tài) State 是可變的。
StatelessWidget
當(dāng)一個(gè)控件狀態(tài)是固定不可變的時(shí)候,就可以使用 StatelessWidget。前面我們寫(xiě)的 Hello World 就是使用 StatelessWidget。
容器控件
容器類(lèi)控件一般是將某些屬性或配置,作用在它的子控件上,比如控件所在的寬高、背景、位置等。
常用的容器控件有 Container、Center、Padding 等。
布局控件
布局控件可以類(lèi)比作原生開(kāi)發(fā)中的 Layout,通常它會(huì)擁有一個(gè) children 的屬性,用于接收一個(gè)控件數(shù)組,對(duì)這些控件進(jìn)行特定的排版。
常用的布局控件有 Row、Column、Stack、Flex 等。
基礎(chǔ)控件
基礎(chǔ)控件就是常用的文字、按鈕、圖片等控件。
常用的基礎(chǔ)控件有 Text、TextField、Button、Image 等。
功能控件
在 Flutter 里還有一類(lèi)控件,它們不影響 UI 布局,但帶有一些特定的功能,比如頁(yè)面跳轉(zhuǎn)、事件監(jiān)聽(tīng)、定義主題等。我們把這一類(lèi)控件稱(chēng)作功能控件。
常用的功能控件有 Navigator、NotificationListener、Theme 等。
開(kāi)始寫(xiě) Flutter 代碼了。還記不記得,在 Flutter 項(xiàng)目創(chuàng)建之后,是自帶一個(gè)計(jì)數(shù)器 demo 的,現(xiàn)在我們用自己的代碼實(shí)現(xiàn)一遍。代碼修改成如下:
運(yùn)行之后,就可以看到這樣的界面了:
按鈕每點(diǎn)擊一次,數(shù)字就會(huì)加一。下面我們來(lái)分析一下這段代碼,看下里面用到的一些 Widget。
StatefulWidget
由于頁(yè)面中的數(shù)字是跟隨狀態(tài)變化的,所以該頁(yè)面改用 StatefulWidget。StatefulWidget 并不會(huì)直接返回一個(gè) Widget,而是返回狀態(tài) State,在 State 里再返回 Widget。
Scaffold
Scaffold 是一個(gè)標(biāo)準(zhǔn)的 Material Design 頁(yè)面,它包含了標(biāo)題欄、浮動(dòng)按鈕、側(cè)滑菜單、底部導(dǎo)航欄等配置。我們這里用到了標(biāo)題欄 appBar、頁(yè)面內(nèi)容 body、浮動(dòng)按鈕 floatingActionButton。
AppBar
AppBar 就是標(biāo)題欄,通過(guò)查看控件的構(gòu)造方法,我們可以知道它可配置的屬性。
AppBar 的可選參數(shù)除了標(biāo)題 title,還可以配置標(biāo)題前的內(nèi)容 leading,右側(cè)的操作按鈕 anctions,控件垂直高度 elevation 等。我們只傳了 title,其他屬性都用默認(rèn)值。
Center
Center 是一個(gè)容器類(lèi)控件,它的作用就是讓它的子控件居中顯示。
FloatingActionButton
熟悉安卓開(kāi)發(fā)的應(yīng)該對(duì)這個(gè)控件比較熟悉,它就是頁(yè)面右下角一個(gè)特定樣式的 Button,參數(shù)里面的 onPressed 是一個(gè)必填項(xiàng),要傳一個(gè)點(diǎn)擊之后的回調(diào)函數(shù)。
根據(jù)這個(gè)例子,下面給大家介紹一下 Flutter 兩個(gè)比較重要的特性。
點(diǎn)擊 Button 之后,我們把 num 變量加一,并使用 setState 通知狀態(tài)發(fā)生了改變,F(xiàn)lutter 會(huì)根據(jù)新的狀態(tài)更新 UI。如果有接觸過(guò)小程序開(kāi)發(fā),setState 就和小程序的 setData 類(lèi)似。
在 Flutter 里面我們不需要用 set 方法來(lái)更新 UI,可變控件是和狀態(tài)綁定的,這就是 Flutter 的響應(yīng)式 UI 編程。
在 Android Q 和 iOS 13 里都加入了暗黑模式,我們也換一個(gè)暗黑主題來(lái)玩一下。MaterialApp 里有一個(gè) theme 的屬性,我們把它配置一下:
這次改完之后不點(diǎn) Run 了,我們點(diǎn)一下閃電圖標(biāo) Flutter Hot Reload ,就能看到界面發(fā)生了變化:
這就是 Flutter 的 熱重載 ,在修改完代碼之后,通過(guò)熱重載就能馬上在設(shè)備上看到修改結(jié)果,可以很大程度上增加開(kāi)發(fā)效率。
下面再給大家介紹幾個(gè) Flutter 里的常見(jiàn)操作。
在 Flutter 里,使用 Navigator 來(lái)管理頁(yè)面跳轉(zhuǎn),比如要跳轉(zhuǎn)到一個(gè) NewPage 可以這樣寫(xiě):
進(jìn)棧使用 push,出棧則是 pop。
使用 MaterialPageRoute 會(huì)模擬出 Android 上頁(yè)面跳轉(zhuǎn)的過(guò)場(chǎng)效果。
我們來(lái)看看怎么顯示一張本地圖片。
先在根目錄新建一個(gè)存放圖片的文件夾,比如叫 images,把圖片 picture.png 放進(jìn)去。
找到根目錄下的 pubspec.yaml 文件,這個(gè)便是 Flutter 依賴(lài)配置文件,我們需要在這里配置一下剛才的圖片:
這樣,我們就能使用 Image 控件把這張圖片顯示出來(lái)了:
和 node 的 npm 以及 Android 的 jcenter 類(lèi)似,F(xiàn)lutter 也擁有一個(gè)公共倉(cāng)庫(kù) pub.dev。pub.dev 是 Google 官方的 Dart 倉(cāng)庫(kù),在上面可以找到我們需要的包和插件。
Flutter 本身沒(méi)有 Toast,我們來(lái)接入一個(gè)。在 pub.dev 上搜索后,我決定使用 fluttertoast:
按照說(shuō)明,在 pubspec.yaml 文件里的 dependencies 下配置:
點(diǎn)一下 Android Studio 右上角的 Packages get 同步之后就可以使用了:
我們上面使用的都是 Material Design 的控件,它們都是在 flutter/material.dart 包里面的。如果要使用 iOS 風(fēng)格的控件,則要用到 flutter/cupertino.dart 包:
iOS 風(fēng)格的控件,基本都以 Cupertino 開(kāi)頭。我們把計(jì)時(shí)器頁(yè)面里的控件替換一下:
效果如下:
代碼的部分就到這里了,接下來(lái)跟大家聊一下編譯方式,編程語(yǔ)言的編譯方式有兩種。
關(guān)于它們孰優(yōu)孰劣,就要看從哪個(gè)角度去對(duì)比了。JIT 的話(huà),它的一大特點(diǎn)就是支持動(dòng)態(tài)發(fā)布代碼,也就是支持熱更新。但要是從性能的角度考慮,AOT 會(huì)更好,因?yàn)樵谶\(yùn)行的時(shí)候不用再進(jìn)行編譯的操作的,運(yùn)行的效率會(huì)更高一些。
回到我們一開(kāi)始的時(shí)候留下的問(wèn)題,為什么別的跨平臺(tái)方案都是用 JavaScript,而 Flutter 要用 Dart 來(lái)開(kāi)發(fā)。JavaScript 的編譯方式是 JIT 的,它不支持 AOT。而 Dart 同時(shí)支持 JIT 和 AOT。
Flutter 在開(kāi)發(fā)階段使用 JIT,讓我們用上了熱重載,增加了開(kāi)發(fā)效率。在打包時(shí)改用 AOT,保證了正式版應(yīng)用的性能。
最后講一下大家比較關(guān)心的一個(gè)東西,F(xiàn)lutter 是否支持熱更新?前面說(shuō)到 Dart 支持 JIT,所以從技術(shù)層面它是支持的。但是目前是不支持的,在官方的計(jì)劃文檔中,可以看到:
至于原因,官方在這里進(jìn)行了說(shuō)明??偟膩?lái)說(shuō),是由于政策的限制,以及出于對(duì)性能和安全性的考慮,暫時(shí)不支持了。
到這就結(jié)束啦。由于想把 Flutter 基礎(chǔ)在一篇內(nèi)講完,沒(méi)有涉及太多細(xì)節(jié),如果要寫(xiě) Flutter 代碼還需要深入學(xué)習(xí)。但相信理解之后再學(xué),會(huì)輕松很多。
新聞名稱(chēng):anti-flutter,antiflutter adhesive
URL鏈接:http://m.rwnh.cn/article2/phghoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、服務(wù)器托管、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)