Flutter 是 Google 開源的跨平臺移動開發框架。 用一套代碼爲 iOS 和 Android 構建高性能,美觀的應用程序。它也是 Google 即將推出的 Fuchsia 操做系統的開發平臺。此外,它的架構能夠經過定製的 Flutter 引擎將其引入其餘平臺。web
Flutter 試圖使移動開發更友好, 它爲開發人員提供應用程序框架和可移植的運行時引擎。該框架創建在 Skia 圖形庫上,提供實際呈現的部件,而不只僅是原生控件的包裝。後端
Flutter 作跨平臺開發可以像 web 同樣靈活,但同時提供流暢的性能。Flutter 附帶的部件庫以及開源部件使其成爲一個功能豐富的平臺。簡單地說,Flutter 是最接近移動開發人員用於跨平臺開發的理想平臺,靈活性、性能幾乎毫無妥協。架構
Flutter 使用谷歌開發的 Dart 語言進行開發。 Google給出了選擇Dart開發Flutter的理由:框架
Flutter 分爲 Framework和 Engine,咱們是基於運行在 Engine 上的Framework進行開發App。下面分別對各個模塊進行介紹:函數
Flutter提供了一套豐富的Material widget,可幫助您構建遵循Material Design的應用程序。佈局
Flutter也提供了一套豐富的Cupertino(iOS)風格的widget性能
Flutter Widget採用現代響應式框架構建,聽說是從 React 中得到的靈感。widget的主要工做是實現一個build函數,用以構建自身。一個widget一般由一些較低級別widget組成。Flutter框架將依次構建這些widget,直到構建到最底層的子widget時,這些最低層的widget一般爲RenderObject,它會計算並描述widget的幾何形狀。學習
Rendering動畫
Flutter Widgets庫使用RenderObject層次結構來實現其佈局和繪製後端。 能夠在應用程序中使用自定義RenderBox類來處理特定效果。但大多數狀況下,都只是使用RenderObject層次調試佈局問題。ui
若是直接在Rendering庫上開發本身的庫或應用程序,須要進行綁定(BindingBase)。默認的Widgets已經有Flutter完成綁定。 也可使用RenderingFlutterBinding,建立本身的綁定。至少須要導入ServicesBinding,GestureBinding,SchedulerBinding,PaintingBinding和RendererBinding。
Animation
Flutter 動畫庫,提供兩種動畫類型tween和physics-based。
Painting
該庫包含Flutter引擎的繪製API,用於更專業的目的,例如繪製縮放圖像,在陰影之間插值,在框周圍繪製邊框等。
Gestures
Gesture提供了手勢識別相關的功能,包括觸摸事件類定義和多種內置的手勢識別器。
Engine
Flutter 引擎所有使用C++實現,提供Dart運行時和文字排版引擎(libtxt)和繪圖引擎Skia。SKia是一個 2D的繪圖引擎庫,能夠直接將數據經過OpenGL或者 Vulkan,傳給GPU進行繪製。Chrome和 Android均採用 Skia做爲繪圖引擎。Skia提供了很是友好的 API,而且在圖形轉換、文字渲染、位圖渲染方面都提供了友好、高效的表現。Skia是跨平臺的,因此能夠被嵌入到 Flutter的 iOS SDK中,而不用去研究 iOS閉源的 Core Graphics / Core Animation。