日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

  • Flutter 作為google出品的一個新興的跨平臺移動客戶端UI開發框架,正在被越來越多的開發者和組織使用,包括阿里的咸魚、騰訊的微信等。
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

  • 今天,我將獻上一份 《全面 & 詳細的Flutter學習指南》,希望你們會喜歡。
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 


目錄

Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 


1. 簡介

  • 定義:一款Google出品&開源的移動客戶端UI開發框架(SDK)
  • 作用:用一套代碼同時在Android、IOS上快速構建高質量、高性能的原生用戶界面
  • 開發語言:Dart語言(高開發效率、高性能等)

2. 特點

  • Flutter的主要特點包括:使用自身的高性能渲染引擎進行渲染 & Dart編程語言語言
  • 具體介紹如下:

2.1 高性能渲染引擎

  • Flutter進行UI繪制時,使用的是自帶的高性能渲染引擎進行繪制渲染(不使用WebView & 原生控件)
  • 好處:保證在Android和iOS上UI的一致性 & 避免對原生控件依賴而帶來的限制和維護成本。
  • 組成:C、C ++、Dart、Skia(2D渲染引擎),具體描述如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

特別注意:

  • Flutter依靠Flutter Engine虛擬機在iOS和Android上運行
  • Flutter Engine使用C/C++編寫 = 低延遲輸入 + 高幀速率
  • 開發人員可通過Flutter框架和API在內部進行交互
  • 下面,簡單介紹一下Flutter的2D渲染引擎:Skia
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

2.2 Dart語言

  • 介紹Dart語言前先介紹兩個概念:JIT和AOT。程序主要有兩種運行方式:靜態編譯 & 動態編譯,具體如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

特別注意:

  • JIT 和 AOT指的是程序運行方式,和編程語言并非強關聯的。
  • 有些語言可以以JIT方式 & AOT方式一起運行,如JAVA,它可在第一次執行時編譯成中間字節碼、然后在之后執行時可以直接執行字節碼
  • 通常區分是否為AOT的標準就是看代碼在執行之前是否需要編譯,只要需要編譯,無論其編譯產物是字節碼還是機器碼,都屬于AOT

Dart語言的特點

  • Dart語言具備開發效率高、高性能 & 類型安全的特點
  • 具體如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 


3. 原理解析

3.1 框架結構

  • Flutter框架主要分為兩層:FrameWork層、Engine層,如下圖所示:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

  • 說明:開發時,主要基于Framework層;運行時,則是運行在 Engine上。每層的具體介紹如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

3.2 原理概述

  • 開發時,主要基于Framework層;運行時,則是運行在 Engine上
  • Engine是Flutter的獨立虛擬機,由它適配 & 提供跨平臺支持;因為其存在,Flutter不使用移動端系統的原生控件, 而是使用自己 Engine 來繪制 Widget (Flutter的顯示單元); Dart 代碼是通過 AOT 編譯為平臺的原生代碼,所以 Flutter可直接與平臺通信,不需要JS引擎的橋接。
  • 同時 Flutter 唯一要求系統提供的是 canvas,以實現UI的繪制。
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

  • 編譯時,具體如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

3.3 關于widget

Flutter理念:“一切皆為Widget”,Widget是Flutter應用程序用戶界面的基本構建塊,具備以下特點:

  • 屬于具有一致性的統一對象模型,與其他將視圖、控制器、布局和其他屬性分離的框架不同。更新widget時更加高效
  • 不可變的,僅支持一幀,且每一幀上不會直接更新,要更新而必須使用Widget的狀態。無狀態和有狀態Widget 的核心特性相同,每一幀都會重新構建;
  • 有一個State對象,用于跨幀存儲狀態數據 & 恢復

4. 特點

  • Flutter具備跨平臺、開發效率高 & 高性能的特點
  • 具體說明如下:

4.1 跨平臺 & 開發效率高

Flutter通過使用上述所述的自身渲染引擎、原理框架 & Widget運行,使用一套代碼即可同時構建iOS和Android應用,從而實現跨平臺的特性,最終提高開發的效率

4.2 高性能

  • 原因1:通過其自帶的高性能渲染引擎進行渲染
  • 原因2:Dart語言本身的語言特性
  • 原因3:編譯過程特點,具體如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

5. 對比

  • 跨平臺開發的本質是為了:增加代碼復用、減少不同平臺差異適配的工作量 & 提高開發效率。
  • 目前主流的跨平臺開發框架有:React-Native、Weex和本文提及的Flutter。下面,我先簡單介紹React-Native和Weex,再進行三者的對比。
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

5.1 React-Native

  • 簡介
  • 由Facebook出品,采用了JavaScript語言、JSCore引擎和通過原生渲染的跨平臺框架
  • 實現原理
  • 通過編寫JavaScript語言代碼,通過 React Native 的中間層來調用 Native端的組件,最終實現相應的功能。JS端中所寫控件的作用類似 Map中的key 值,對應著Native端的對應控件(如 Android 中 標簽對應 ViewGroup 控件)。JS端會通過多個key 組合成Dom,最后交由Native端進行解析,最終渲染出Native端的控件。
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

  • 實現框架
  • React Native的架構主要由三層實現。其中最重要的是由C++ 實現的中間適配層,此處最主要封裝了JavaScriptCore用于執行JS的解析,最終實現了JS端與原生端的雙向通信交互。而React Native運行在JavaScriptCore中。(在iOS上直接使用內置的javascriptcore、在Android則使用webkit.org官方開源的jsc.so)
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

5.2 Weex

  • 簡介
  • 由Alibaba出品,采用了JavaScript語言、JS V8引擎和通過原生渲染的跨平臺框架
  • 實現原理
  • 與React-Native類似,JS端會通過多個key組合成Dom,最后交由Native端進行解析,最終渲染出Native端的控件,但區別在于:Weex是可以跨三端的 = Android、iOS、Web,其原因在于在開發過程中,代碼模式、編譯過程、模板組件、數據綁定、生命周期等上層語法是一致,不同的是Web端和Native端對Virtual DOM 執行的解析方法有所區別。
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

  • 實現框架
  • weex的架構主要分為三部分,具體如下:
Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

5.3 三者對比

Android開發:手把手帶你入門跨平臺UI開發框架Flutter

 

注:對于性能的對比,從理論上來說Flutter應該是最接近原生性能 & 最好的,但就目前實際應用&體驗中并沒具備很明顯的差異化,后續需進行進一步的驗證。

分享到:
標簽:Android Flutter
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定