一炫彩、初識Flutter

Flutter是什么矩欠?

Flutter is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop form a single codebase倦踢。


Flutter是一個UI SDK(Software Development Kit)炕倘。

可以進(jìn)行移動端(iOS挎扰、Android)翠订,Web端(Beta),桌面(technical preview)遵倦,跨平臺解決方案尽超;

移動端目前已經(jīng)很多公司在用,Google梧躺、阿里似谁、騰訊。

特別是阿里的咸魚團(tuán)隊掠哥,為Flutter做了非常多的貢獻(xiàn)巩踏;

Flutter它是有一統(tǒng)大前端的野心的,并且它正在侵蝕iOS续搀、Android這些原生開發(fā)塞琼;


Flutter的特點

Google公司在國內(nèi)做過很多宣講,其中多次提到Flutter的幾個特點:美觀禁舷、快速彪杉、高效毅往、開發(fā)。

美觀:使用Flutter內(nèi)置美麗的Material Design和Cupertino widget派近,豐富的motion API攀唯,平滑而自然的活動效果和平臺感知,為您的用戶帶來全新的體驗渴丸。

快速:Flutter 的UI渲染性能很好侯嘀。在生產(chǎn)環(huán)境下,F(xiàn)lutter 將代碼編譯成機(jī)器碼執(zhí)行谱轨,并充分利用 GPU 的圖形加速能力戒幔,因此使用Flutter 開發(fā)的移動應(yīng)用即使在低配手機(jī)上也能實現(xiàn)每秒 60 幀的 UI 渲染速度; Flutter 引擎使用 C++ 編寫土童,包括高效的 Skia 2D 渲染引擎溪食,Dart 運行時和文本渲染庫。

高效:Hot Reload (熱重載) 娜扇,在前端已經(jīng)不是什么新鮮的東西,但在移動端之前一直是沒有的

開發(fā):Flutter 是開放的栅组,它是一個完全開源的項目雀瓢。


平臺獨立開發(fā):

完整的軟件系統(tǒng)需要移動端:iOS端和Android端?

iOS端使用OC、Swift來進(jìn)行開發(fā)玉掸,大部分iOS程序員目前這兩個都需要掌握刃麸;(iOS開發(fā)工程師)?

Android端使用Java、Kotlin來進(jìn)行開發(fā)司浪,使用Java開發(fā)Android會更多一些泊业;(Android開發(fā)工程師)?

對于公司來說成本其實是非常高的。

在很長一段時間內(nèi)啊易,大家都在需求一種移動端的跨平臺解決方案吁伺,希望可以通過一套代碼開發(fā)出可以同時運行在iOS和Android兩個系統(tǒng)上的應(yīng)用程序。

跨平臺解決方案一:webview

基于 JavaScript 和 WebView的跨平臺租谈。

最早出現(xiàn)的跨平臺框架是基于JavaScript和WebView篮奄, 代表框架有PhoneGap,Apache Cordova割去,Ionic 等等窟却。

主要是通過HTML來構(gòu)建自己的界面,再將其顯示在各個平臺的WebView中呻逆。

但是它默認(rèn)是不能調(diào)用本地的一些服務(wù)的(比如相機(jī)夸赫、藍(lán)牙等),所以需要通過JavaScript進(jìn)行橋接調(diào)用Native的一些代碼來完成某些功能咖城。但是茬腿,它本身的體驗呼奢、性能都并不理想,而且開發(fā)過程

中的坑非常多滓彰。

跨平臺解決方案二:React Native

在尋求最佳跨平臺解決方案的過程中控妻,無疑React Native 是之前最優(yōu)秀的一個。

React Native (簡稱RN)是Facebook于2015年4月開源的跨平臺移動應(yīng)用開發(fā)框架揭绑,是Facebook早先開源的JS框架React在原生移動應(yīng)用平臺的衍生產(chǎn)物弓候,目前支持iOS和安卓兩大平臺。

RN使用JavaScript語言他匪,類似于HTML的JSX菇存,以及CSS來開發(fā)移動應(yīng)用,因此熟悉Web前端開發(fā)的技術(shù)人員只需很少的學(xué)習(xí)就可以進(jìn)入移動應(yīng)用開發(fā)領(lǐng)域邦蜜。?

并且在保留基本渲染能力的基礎(chǔ)上依鸥,用原生自帶的 UI 組件實現(xiàn)核心的渲染引擎,從而保證了良好的渲染性能悼沈。

但是贱迟,由于RN的本質(zhì)是通過JavaScript VM調(diào)用原生接口,通信相對比較低效絮供,而且框架本身不負(fù)責(zé)渲染衣吠,而是是間接通過原生進(jìn)行渲染的。所以在RN上做出非常多貢獻(xiàn)的Airbnb之前就宣布放棄RN壤靶, 而轉(zhuǎn)向Native進(jìn)行開發(fā)

跨平臺解決方案三:Flutter

從Flutter出現(xiàn)到現(xiàn)在缚俏,我個人就一直非常看好贮乳,因為它可能才是我們很久以來所期待的跨平臺的終極解決方案忧换。

我們直接看下面這幅圖來對比flutter - native - rn的區(qū)別?

Flutter利用Skia繪圖引擎,直接通過CPU向拆、GPU進(jìn)行繪制亚茬,不需要依賴任何原生的控件

Android操作系統(tǒng)中,我們編寫的原生控件實際上也是依賴于Skia進(jìn)行繪制浓恳,所以flutter在某些Android操作系統(tǒng)上甚至還要高于原生(因為原生Android中的Skia必須隨著操作系統(tǒng)進(jìn)行更新才写,而Flutter SDK中總是保持最新的)

而類似于RN的框架,必須通過某些橋接的方式先轉(zhuǎn)成原生進(jìn)行調(diào)用奖蔓,之后再進(jìn)行渲染赞草。

Flutter繪制原理圖

flutter區(qū)別于React Native的本質(zhì)區(qū)別:

React Native之類的框架,只是通過JavaScript虛擬機(jī)擴(kuò)展調(diào)用系統(tǒng)組件吆鹤,由Android和iOS系統(tǒng)進(jìn)行組件的渲染厨疙;Flutter 是自己完成了組件渲染的閉環(huán)

圖像是如何顯示的?

首先疑务,你需要知道沾凄,我們在屏幕上可以看到的所有內(nèi)容都是計算機(jī)繪制出來的圖像梗醇。

無論是視頻還是GIF圖片,還是操作系統(tǒng)給我們看到的圖形化界面中的畫面撒蟀,都是圖像叙谨。?

但是我們?yōu)槭裁茨芸吹筋愃朴趧赢嫷男Ч兀?/p>

這是因為它播放的速度非常快保屯,研究表明:當(dāng)圖片連續(xù)播放的頻率超過16幀(16張圖片)手负,人眼就會感覺非常流暢,當(dāng)少于16幀時姑尺,會感覺到卡頓竟终,所以我們平時看到的電影,通常都是24幀或者30幀的(李安之前拍攝120幀的電影切蟋,目的就是讓圖片間隔更小统捶,畫面更加的流暢)?

幀率與刷新率的關(guān)系:

幀率(fps):Frames Per Second ?

刷新率:顯示器的頻率,比如iPhone的 60Hz柄粹、iPad Pro的 120Hz喘鸟。

雙重緩存(Double Buffer)?

雙重緩存存在的問題

雙重緩存的缺陷在于:當(dāng) CPU/GPU 繪制一幀的時間過長(比如超過16ms)時,會產(chǎn)生Jank(畫面停頓驻右,甚至空白)迷守。

三重緩存(Triple Buffer):本質(zhì)是在每次Vsync信號發(fā)出后,多緩存一個Buffer作為備用旺入。


渲染引擎skia

大前端學(xué)不動系列

很多人看到Google的flutter框架的時候,第一反應(yīng)就是:別出新東西了凯力,實在學(xué)不動了茵瘾。

客戶端開發(fā)者:從Android到iOS,或者從iOS到Android咐鹤,到RN拗秘,甚至現(xiàn)在越來越多的客戶端開發(fā)者接觸前端相關(guān)知識(Vue、React祈惶、Angular雕旨、小程序)?

前端開發(fā)者:從jQuery到AngularJS,到三大框架并行:Vue捧请、React凡涩、Angular,還有小程序疹蛉,甚至現(xiàn)在也要接觸客戶端開發(fā)(比如RN活箕、Flutter),包括TypeScript可款、Webpack育韩、uniapp克蚂、Nodejs。?

大前端開發(fā)就是筋讨,不像服務(wù)器一樣可能幾年甚至幾十年還是那一套的東西埃叭,新技術(shù)會層出不窮。?

但是每一樣技術(shù)的出現(xiàn)都會讓驚喜悉罕,因為他必然是解決了之前技術(shù)的某一個痛點的赤屋,所以我們要學(xué)會擁抱這種變化。

并且很多知識在學(xué)習(xí)的過程中蛮粮,你會發(fā)現(xiàn)他們都是相同的益缎,并不是說都要從頭再來,最重要的是建立屬于自己的知識體系然想。?



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莺奔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子变泄,更是在濱河造成了極大的恐慌令哟,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妨蛹,死亡現(xiàn)場離奇詭異屏富,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蛙卤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門狠半,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颤难,你說我怎么就攤上這事神年。” “怎么了行嗤?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵已日,是天一觀的道長。 經(jīng)常有香客問我栅屏,道長飘千,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任栈雳,我火速辦了婚禮护奈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哥纫。我一直安慰自己逆济,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奖慌,像睡著了一般抛虫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上简僧,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天建椰,我揣著相機(jī)與錄音,去河邊找鬼岛马。 笑死棉姐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啦逆。 我是一名探鬼主播伞矩,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夏志!你這毒婦竟也來了乃坤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沟蔑,失蹤者是張志新(化名)和其女友劉穎湿诊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘦材,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡厅须,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了食棕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朗和。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖簿晓,靈堂內(nèi)的尸體忽然破棺而出眶拉,到底是詐尸還是另有隱情,我是刑警寧澤抢蚀,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站镰禾,受9級特大地震影響皿曲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吴侦,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一屋休、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧备韧,春花似錦劫樟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奶陈。三九已至,卻和暖如春附较,著一層夾襖步出監(jiān)牢的瞬間吃粒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工拒课, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留徐勃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓早像,卻偏偏與公主長得像僻肖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卢鹦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

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