Flutter 原理之跨平臺

經過最近對 Flutter 開發的大體瞭解,感覺最深的簡單歸納就是:Widget 就是一切外加組合和響應式,咱們開發的界面,經過組合其餘的 Widget 來實現,當界面發生變化時,不會像咱們原來 iOS 或者 Andriod 開發同樣去直接修改 UI 元素,而是去去更新狀態,根據新的狀態來完成 UI 的構建,這一點是否是跟 Vue、React 很像。編程

關於 Widget 的具體使用,我也不打算去寫,若是須要對某個知識點須要深刻探索下的話,可能會記錄下,其實對 Widget 學習你們能夠參考 Flutter Api 文檔地址以下:https://api.flutter.dev/> ,...api

要理解 Flutter 跨平臺實現的緣由,先了解下屏幕顯示圖像的基本原理。weex

屏幕顯示器都是有一個個的物理顯示單元構成,每一個物理單元稱之爲一個像素點,每個像素點能夠承載多種顏色的顯示,屏幕顯示器可以顯示圖像就是由於不一樣的像素點上呈現的不一樣的顏色,最終呈現出來一個完整的圖像。編程語言

一般說的同一面積屏幕顯示器,屏幕分辨率越高,顯示器能夠呈現的元素就會越多,咱們看到的畫面就會越清晰。學習

咱們知道手機屏幕刷新頻率是 60Hz ,當一幀畫面顯示完成後,準備下一幀時,顯示器會發出一個垂直同步信號,這樣在 1s 內顯示就完成了 60 次這樣的操做,而每次操做中,都是完成 CPU 將計算好的內容,同步到 GPU ,GPU 對要顯示的內容進過渲染操做,放入到了緩衝區中,等待顯示器去顯示,整個操做都是有操做系統的硬件系統來完成的。操作系統

iOS 、Andriod移動設備的 GUI 顯示都是這樣一個原理,其實不一樣操做系統 UI 控件,只是操做系統去操做硬件系統 API 的一層封裝,若是咱們直接操做底層 API 去完成 GUI 開發是一件很是痛苦的事。ip

Flutter 只是用一種編程語言,也就是採用一套Dart API ,底層經過 OpenGL(操做系統 API 的一個封裝庫)這種跨平臺的繪製庫,來實現一套代碼跨端使用,也就是說 Flutter 所謂跨平臺只是 Dart 調用 OpenGL ,而後 OpenGL 再去調用操做系統底層的 API 。跟 ReactNative 、weex 不一樣的是,他們須要依賴 JavaScriptCore 引擎去跟原生應用的通訊。開發

固然咱們不去談論方案的優劣,自己他們選擇的方向就不一樣。文檔

相關文章
相關標籤/搜索