-
Flutter 和 ReactNative( RN ) 的異同?
編程
- RN 是使用JS代碼調用系統的原生控件,最高支持 60fps。 Flutter 不使用系統的原生控件, Flutter 基於GPU渲染,因此確保了 高性能,最高支持120fps,甚至不輸原生。
- Flutter只須要維護一套UI 代碼:Flutter 在IOS和Android 是一套 UI 風格組件,因此 Flutter 須要作不多適配,由於上層只有一套UI代碼。RN是同一套代碼在IOS和Android顯示不一樣的風格,須要適配維護兩個代碼庫。
- 相同點: 和RN相似,基於組件開發Widget,一切皆組件。
-
誰創造了Flutter?
Flutter是一個開源項目。目前,大部分的開發工做都是由Google的工程師完成的。如今愈來愈多的社區開發者加入。json
-
Flutter引擎有多大?
官方曾測量了一個最小的 Flutter 應用(不含 Material 組件,僅有一個 Center 控件,使用 flutter build apk 構建),並打包爲 release 版本,大小約爲 4.06 MB。該APP:核心引擎大約爲 2.7MB(已壓縮),框架和應用程序代碼大約 820.6KB (已壓縮),LICENSE 文件爲 53.5KB(已壓縮),必要的 Java 代碼 (classes.dex) 爲 61.8KB(已壓縮),此外還有大約 450.4KB(已壓縮)的 ICU 數據。
所以相對應用程序,Flutter的引擎並不大。架構
-
Flutter能夠構建桌面應用程序嗎?
能夠,但目前專一於移動端優先。將來會支持 WIndows , Mac 和 Linux。併發
-
Flutter的標記語言在哪裏?爲何Flutter沒有標記語法(相似於Android的XML佈局文件)?
和Android原生開發不一樣,使用代碼動態構建的UI會更靈活:
1. 嚴格的標記系統難以表達和生成具備特定行爲的widget。
2. 「代碼優先」更好地支持熱重載和動態環境適應等功能。框架
-
能夠在Flutter中使用JSON 嗎?
必須能夠,有關如何在Flutter中使用JSON的教程,請參閱 JSON教程。less
-
Flutter支持和原生混合開發麼?能夠在當前原生APP中嵌入Flutter麼?
能夠,目前能夠在現有的Android或iOS應用中嵌入Flutter,可是當前可能不太完善。 這裏是官方文檔以供參考。異步
-
爲何Flutter選擇使用Dart語言?ide
- Dart運行時和編譯器支持Flutter的混合編譯:
- 基於JIT的快速開發週期:容許使用類型的語言進行形狀更改和有狀態的熱重載
- 基於AOT編譯器,可生成高效的ARM代碼,能夠快速啓動並擁有可預測的生產部署性能。
- Dart由谷歌維護,Dart社區正在積極投入資源改進Dart在Flutter中的使用。
- Dart語言效率高,這點最重要!!!,這對framework團隊和開發人員都很是重要。由於大部分Flutter功能都是用Dart實現,所以咱們須要在10萬行代碼時能保持高效的而不會犧牲framework和widget的可讀性。
- Dart面向對象。絕大多數開發人員都具備面向對象開發的經驗,所以更容易學習如何使用Flutter進行開發。
- Dart可預測,高性能。 Flutter框架使用函數式流,它很大程度上依賴於底層的內 存分配器,從而有效地處理小的、短時間的內存分配會很是重要,因此在缺 乏此功能的語言中Flutter沒法有效地工做。
-
Flutter是什麼語言編寫的?
Flutter的不一樣是由於它核心只有一層輕量的C/C++代碼。Flutter在Dart中實現了其它大部分系統(組合、手勢、動畫、框架、widget等),開發人員能夠輕鬆地進行讀取、更改、替換或移除。這爲開發人員提供了對系統的巨大可定製性。
知識點分享:flutter架構函數式編程
-
Flutter框架使用什麼編程範式?
Flutter是一個多範式編程環境。 集合了過去十多年優秀的開發範式:函數
- 組合:Flutter使用的主要範例是使用小對象,而後將它們組合在一塊兒以得到更復雜的對象。好比Widget之間的相互嵌套。
- 函數式編程:整個應用程序能夠僅使用StatelessWidget來構建 ,這些函數本質上是描述參數如何映射到其餘函數的函數。
- 事件驅動:用戶交互由事件對象表示,這些事件對象被分派給註冊了事件處理程序的回調。屏幕刷新也由相似的回調機制觸發。
- 基於類的面向對象編程:框架的大部分API都是使用繼承類來構建的。咱們使用一種方法來在基類中定義很是抽象的API,而後在子類中迭代地對它們進行定製化。
- 命令式編程:直接命令式編程一般與對象內部封裝的狀態配對,用於提供最直觀的解決方案。
- 響應式編程:widget 和元素樹有時被描述爲響應式的,由於在 widget 的構造函數中提供的新輸入會當即做爲 widget 的構建方法對較低級別 widget 的更改傳播,並在較低 widget 中進行更改(例如,做爲響應到用戶輸入)經過事件處理程序傳播回widget樹。
- 泛型:泛型檢測可用於幫助開發人員及早發現編程錯誤。Flutter框架使用泛型編程來處理這個問題。
- 併發:Flutter大量使用異步API。例如,動畫系統經過Future來完成動畫完成時的通知。圖像加載系統一樣使用Future在加載完成時進行報告。
- 約束:Flutter中的佈局系統使用弱形式的約束編程來肯定佈局的幾何形狀。約束(例如,父控件將大小約束傳給子控件)知足這些限制。經過使用這種技術,Flutter能夠更加精準的控制佈局。