認(rèn)識 Flutter 是什么?

(一)什么是 Flutter

Flutter是谷歌的移動UI框架,可以快速在iOSAndroid上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,Flutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費、開源的。

從官方的的介紹來看可以總結(jié)成三點:

  1. 跨平臺 現(xiàn)在Flutter至少可以跨 4 種平臺,甚至支持嵌入式開發(fā)。我們常用的有Linux、AndroidIOS,甚至可以在谷歌最新的操作系統(tǒng)上Fuchsia進(jìn)行運行,經(jīng)過第三方擴(kuò)展,甚至可以跑在MacOSWindows上,到目前為止,Flutter算是支持平臺最多的框架了,良好的跨平臺性,直接帶來的好處就是減少開發(fā)成本。

  2. 原生用戶界面: 它是原生的,讓我們的體驗更好,性能更好。用官方的話講就是平滑而自然的滑動效果和平臺感知,為您的用戶帶來全新的體驗。

  3. 開源免費:Android系統(tǒng)一樣,這些都是免費開源的。


(二)主流跨平臺框架對比

  1. ReactNative 和 Weex:執(zhí)行效率是硬傷,首頁不能用RN已是共識,而且目前在同一AndroidiOS代碼方面尚存在不足。

  2. PWA:用純Web的方式統(tǒng)一三端,很好的idea。但是需要借助Google play Service和瀏覽器支持,國外大部分Android手機(jī)和iOS的新版本都可以支持PWA,但遺憾的是,國內(nèi)的瀏覽器很難統(tǒng)一支持PWA,這還需要時間。

  3. 微信小程序:屬于微信內(nèi)的生態(tài)閉環(huán),更適合工具類和小游戲,一般都作為原生APP的延伸入口。

  4. Flutter:在渲染技術(shù)上,Flutter選擇了自己實現(xiàn)GDI,由于有更好的可控性,使用了新的語言Dart,避免了RN的那種通過橋接器與Javascript通訊導(dǎo)致效率低下的問題,所以在性能方面比RN更高一籌;有經(jīng)驗的開發(fā)者可以打開Android手機(jī)開發(fā)者選項里面的顯示邊界布局,發(fā)現(xiàn)Flutter的布局是一個整體。說明Flutter的渲染沒用使用原生控件進(jìn)行渲染。

技術(shù)類型 UI渲染方式 性能 開發(fā)效率 動態(tài)化 框架代表
H5 + 原生 WebView 渲染 一般 ?? Cordova、Ionic
JavaScript + 原生渲染 原生控件渲染 ?? RN、Weex
自繪UI + 原生 調(diào)用系統(tǒng)API渲染 默認(rèn)不支持 Flutter

(三)Flutter 的特點

  1. 快速開發(fā)
    毫秒級的熱重載,修改后,您的應(yīng)用界面會立即更新。使用豐富的、完全可定制的widget在幾分鐘內(nèi)構(gòu)建原生界面。

  2. 富有表現(xiàn)力和靈活的UI
    使用Flutter內(nèi)置美麗的Material DesignCupertinowidget、豐富的motion API、平滑而自然的滑動效果和平臺感知,為您的用戶帶來全新體驗。

  3. 響應(yīng)式框架
    使用Flutter的響應(yīng)式框架和一系列基礎(chǔ)widget,可以輕松構(gòu)建您的用戶界面。使用功能強(qiáng)大且靈活的API(針對2D、動畫、手勢、效果等)可以幫助開發(fā)者解決艱難的UI挑戰(zhàn)。

class CounterState extends State<Counter> {
  int counter = 0;

  void increment() {
    // 告訴Flutter state已經(jīng)改變, Flutter會調(diào)用build(),更新顯示
    setState(() {
      counter++;
    });
  }

  Widget build(BuildContext context) {
    // 當(dāng) setState 被調(diào)用時,這個方法都會重新執(zhí)行.
    // Flutter 對此方法做了優(yōu)化,使重新執(zhí)行變的很快
    // 所以你可以重新構(gòu)建任何需要更新的東西,而無需分別去修改各個widget
    return new Row(
      children: <Widget>[
        new RaisedButton(
          onPressed: increment,
          child: new Text('Increment'),
        ),
        new Text('Count: $counter'),
      ],
    );
  }
}

瀏覽 widget 目錄 ,了解更多關(guān)于 響應(yīng)式框架.

  1. 訪問本地功能和SDK并支持插件
    Flutter可以復(fù)用Java、SwiftObjC代碼,訪問AndroidiOS上的原生系統(tǒng)功能。另外通過Flutter插件也可以訪問原生系統(tǒng)功能,比如藍(lán)牙、相機(jī)、WiFi等等。

  2. 跨平臺自繪引擎
    FlutterHybrid App、React Native這些跨平臺技術(shù)不同,Flutter既沒用使用WebView,也沒有使用各個平臺的原生控件,而是本身實現(xiàn)一個統(tǒng)一接口的渲染引擎來繪制UI,這樣做可以保證不同平臺UI的一致性。另外采用自繪引擎后,Flutter在布局過程中不需要像RN那樣要在JavaScriptNative之間通信,可以節(jié)省性能開銷。Flutter使用Skia作為其2D渲染引擎,SkiaGoogle的一個2D圖形處理函數(shù)庫,包含字型、坐標(biāo)轉(zhuǎn)換,以及點陣圖都有高效能且簡潔的表現(xiàn),Skia是跨平臺的,并提供了非常友好的API

  3. 采用Dart開發(fā)
    Flutter App采用Dart語言來開發(fā)。與JavaScript相比,DartJIT(即時編譯)模式下,速度與JavaScript基本持平。但是當(dāng)DartAOT(運行前編譯)模式運行時,Dart性能要高于JavaScript


學(xué)習(xí)資料

Flutter 中文網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 篇外話 “Flutter是什么?”、“它出現(xiàn)的動機(jī)是什么?解決了哪些痛點?”、“相比React Native、We...
    KavinZhou閱讀 9,493評論 8 35
  • flutter是什么 最近同事分享了一篇flutter操作系統(tǒng),感覺不錯,自己總結(jié)了一下,發(fā)上來給大家一個參考,F(xiàn)...
    android老男孩閱讀 7,030評論 3 17
  • 國慶后面兩天在家學(xué)習(xí)整理了一波flutter,基本把能擼過能看到的代碼都過了一遍,此文篇幅較長,建議保存(star...
    Nealyang閱讀 4,447評論 1 17
  • 標(biāo)簽(空格分隔): Flutter Dart Flutter簡介 Flutter 是 Google推出并開源的移動...
    黃昭鴻閱讀 524評論 0 1
  • Flutter是什么? Flutter是 Google推出并開源的移動應(yīng)用開發(fā)框架,主打跨平臺、高保真、高性能。開...
    木水Code閱讀 723評論 0 1

友情鏈接更多精彩內(nèi)容