【Flutter面試題】基礎(chǔ)篇(持續(xù)更新)

1. Dart中var與dynamic的區(qū)別:
使用var來聲明變量吱涉,dart會(huì)在編譯階段自動(dòng)推導(dǎo)出類型蝌蹂。而dynamic不在編譯期間做類型檢查而是在運(yùn)行期間做類型校驗(yàn)铛漓。

2. const和final的區(qū)別:
const 的值在編譯期確定,final 的值在運(yùn)?時(shí)確定草雕。

3. Dart中??與??=的區(qū)別:
兩者都是dart中的操作符贰锁,??表示如果為空則返回赃梧,??=表示如果為空則賦值。例如:

    String a;
    String b = a ?? "1";
    print(b);//打印結(jié)果:1
    print(a);//打印結(jié)果:null
    a ??= "2";
    print(a);//打印結(jié)果:2

4. Flutter中的GlobalKey是什么豌熄,有什么作用授嘀?
Globalkey可以主動(dòng)獲取以及主動(dòng)改變子控件的狀態(tài)。

5. Widget房轿、Element粤攒、RenderObject三者之間的關(guān)系:
Widget不是真正渲染UI的對象所森,它只是Element的一個(gè)配置描述,去告知Element應(yīng)該如何去渲染夯接,Widget 和 Element 之間是 ?對多的關(guān)系 焕济。RenderObject才是實(shí)際渲染的對象,Element 持有 RenderObject 和 Widget盔几。?致總結(jié)三者的關(guān)系是:配置?件 Widget ?成了 Element晴弃,?后創(chuàng)建 RenderObject 關(guān)聯(lián)到 Element 的內(nèi)部 renderObject 對象上,最后Flutter 通過 RenderObject 數(shù)據(jù)來布局和繪制逊拍。

6. 通過BoxDecoration和ClipRRect設(shè)置圓角有什么區(qū)別上鞠?
使用BoxDecoration設(shè)置圓角不會(huì)影響其child控件,也就是如果child是圖片或者也有背景色的話那么圓角效果就失效了芯丧。而ClipRRect是會(huì)影響到child的芍阎,加了圓角后,也會(huì)約束到child產(chǎn)生圓角效果缨恒。

7. 闡述state的生命周期:

  • initState:state創(chuàng)建初始化時(shí)調(diào)用谴咸,表示state將和一個(gè)BuildContext產(chǎn)生關(guān)聯(lián),需要注意的是此時(shí)BuildContext還沒有完全加載完成骗露,如果需要獲取BuildContext及監(jiān)聽第一次build完成可以在下面回調(diào)中獲取
widgetsBinding=WidgetsBinding.instance;
    widgetsBinding.addPostFrameCallback((callback){
      print("addPostFrameCallback be invoke");
    });
  • didChangeDependencies:在 initState() 之后調(diào)?岭佳,當(dāng) State 對象的依賴關(guān)系發(fā)?變化時(shí),該?法被調(diào)?萧锉,初始化時(shí)也會(huì)調(diào)?珊随。
  • deactivate:當(dāng)state暫時(shí)在視圖樹種移除時(shí)被調(diào)用,頁面切換時(shí)也會(huì)調(diào)用柿隙。
  • dispose:state銷毀時(shí)調(diào)用叶洞,在調(diào)用此方法之前會(huì)先調(diào)用deactivate()。
  • didUpdateWidget:當(dāng)widget狀態(tài)發(fā)生變化時(shí)調(diào)用禀崖。


    生命周期

8. Flutter與原生通信的Channel有哪幾種京办?
Flutter定義了三種不同類型的Channel,它們分別是:
BasicMessageChannel:用于傳遞字符串和半結(jié)構(gòu)化的信息帆焕。
MethodChannel:用于傳遞方法調(diào)用(method invocation)。
EventChannel: 用于數(shù)據(jù)流(event streams)的通信不恭。

9.介紹下 Flutter 的優(yōu)缺點(diǎn):
(1)優(yōu)點(diǎn)
? 熱重載(Hot Reload)叶雹,利用 Android Studio 直接一個(gè) ctrl+s 就可以保存
并重載,模擬器立馬就可以看見效果换吧,相比原生冗長的編譯過程強(qiáng)很多折晦;
? 一切皆為 Widget 的理念,對于 Flutter 來說沾瓦,手機(jī)應(yīng)用里的所有東西都是Widget满着,通過可組合的空間集合谦炒、豐富的動(dòng)畫庫以及分層課擴(kuò)展的架構(gòu)實(shí)現(xiàn)了富有感染力的靈活界面設(shè)計(jì);
? 借助可移植的 GPU 加速的渲染引擎以及高性能本地代碼運(yùn)行時(shí)以達(dá)到跨平臺設(shè)備的高質(zhì)量用戶體驗(yàn)风喇。 簡單來說就是:最終結(jié)果就是利用 Flutter 構(gòu)建應(yīng)用在運(yùn)行效率上會(huì)和原生應(yīng)用差不多宁改。
(2)缺點(diǎn)
? 不支持熱更新;
? 三方庫有限魂莫,需要自己造輪子还蹲;
? Dart 語言編寫,增加了學(xué)習(xí)難度耙考,并且學(xué)習(xí)了 Dart 之后無其他用處谜喊,相比
JS 和 Java 來說。

10.簡述 Widget 的 StatelessWidget 和StatefulWidget 兩種狀態(tài)組件類倦始。
? StatelessWidget: 一旦創(chuàng)建就不關(guān)心任何變化斗遏,在下次構(gòu)建之前都不會(huì)改變。它們除了依賴于自身的配置信息(在父節(jié)點(diǎn)構(gòu)建時(shí)提供)外不再依賴于任何其他信息鞋邑。比如典型的 Text诵次、Row、Column炫狱、Container 等藻懒,都是StatelessWidget。它的生命周期相當(dāng)簡單:初始化视译、通過 build()渲染嬉荆。
? StatefulWidget: 在生命周期內(nèi),該類 Widget 所持有的數(shù)據(jù)可能會(huì)發(fā)生變化酷含,這樣的數(shù)據(jù)被稱為 State鄙早,這些擁有動(dòng)態(tài)內(nèi)部數(shù)據(jù)的 Widget 被稱為 StatefulWidget。比如復(fù)選框椅亚、Button 等限番。State 會(huì)與 Context 相關(guān)聯(lián),并且此關(guān)聯(lián)是永久性的呀舔,State 對象將永遠(yuǎn)不會(huì)改變其 Context弥虐,即使可以在樹結(jié)構(gòu)周圍移動(dòng),也仍將與該 context 相關(guān)聯(lián)媚赖。當(dāng) state 與 context關(guān)聯(lián)時(shí)霜瘪,state 被視為已掛載。StatefulWidget 由兩部分組成惧磺,在初始化時(shí)必須要在 createState()時(shí)初始化一個(gè)與之相關(guān)的 State 對象颖对。

11.Flutter在Debug和Release下分別使用什么編譯模式,有什么區(qū)別磨隘?
Debug模式下使用JIT編譯模式缤底,即Just in time(即時(shí)編譯)顾患,Release下使用AOT模式,即Ahead of time(提前編譯)个唧。JIT模式因?yàn)樾枰呥\(yùn)行邊編譯江解,所以會(huì)占用運(yùn)行時(shí)內(nèi)存,導(dǎo)致卡頓現(xiàn)象坑鱼,但是有動(dòng)態(tài)編譯效果對于開發(fā)者來說非常方便調(diào)試膘流。AOT模式提前編譯不會(huì)占用運(yùn)行時(shí)內(nèi)存,相對來說運(yùn)行流暢鲁沥,但是會(huì)導(dǎo)致編譯時(shí)間增加呼股。

12.Flutter出現(xiàn)異常時(shí)如何友好的提示用戶?
使用ErrorWidget.builder進(jìn)行全局設(shè)置自定義界面即可画恰。

更多好文可前往掘金主頁查看掘進(jìn)主頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彭谁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子允扇,更是在濱河造成了極大的恐慌缠局,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件考润,死亡現(xiàn)場離奇詭異狭园,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)糊治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門唱矛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人井辜,你說我怎么就攤上這事绎谦。” “怎么了粥脚?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵窃肠,是天一觀的道長。 經(jīng)常有香客問我刷允,道長冤留,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任树灶,我火速辦了婚禮搀菩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘破托。我一直安慰自己,他們只是感情好歧蒋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布土砂。 她就那樣靜靜地躺著州既,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萝映。 梳的紋絲不亂的頭發(fā)上吴叶,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音序臂,去河邊找鬼蚌卤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奥秆,可吹牛的內(nèi)容都是我干的逊彭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼构订,長吁一口氣:“原來是場噩夢啊……” “哼侮叮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悼瘾,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤囊榜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亥宿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卸勺,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年烫扼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曙求。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡材蛛,死狀恐怖圆到,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卑吭,我是刑警寧澤芽淡,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站豆赏,受9級特大地震影響挣菲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掷邦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一白胀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抚岗,春花似錦或杠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽认境。三九已至,卻和暖如春挟鸠,著一層夾襖步出監(jiān)牢的瞬間叉信,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工艘希, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硼身,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓覆享,卻偏偏與公主長得像佳遂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子淹真,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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

  • 1. Dart 當(dāng)中的 「..」表示什么意思讶迁? Dart 當(dāng)中的 「..」意思是 「級聯(lián)操作符」,為了方便配置而使...
    馬修斯閱讀 13,700評論 0 22
  • Flutter是Google推出的一套開源跨平臺UI框架核蘸,可以快速地在Android巍糯、iOS和Web平臺上構(gòu)建高質(zhì)...
    GoldMask閱讀 15,315評論 2 48
  • 邂逅FLutter 萬物皆是Widget 一般縮進(jìn)2個(gè)空格 文字居中 Widget Center() Materi...
    JackLeeVip閱讀 3,121評論 0 4
  • Flutter是一個(gè)相對新的跨平臺框架,但是它的流行度正在迅速提高客扎。雇主也意識到單一代碼庫的好處祟峦,依托Flutte...
    whqfor閱讀 12,643評論 1 31
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭徙鱼,有人歡樂有人憂愁宅楞,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,523評論 28 53