轉(zhuǎn):一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

原文:https://www.toutiao.com/a6569388465538990600/?tt_from=weixin&utm_campaign=client_share&timestamp=1529580533&app=news_article&utm_source=weixin&iid=35476649324&utm_medium=toutiao_android&wxshare_count=1

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

何為 Flutter?

“Flutter 可幫助你更容易、更快速的開發(fā)出界面美觀的移動(dòng)應(yīng)用?!盙oogle 官方如是說。

實(shí)則,F(xiàn)lutter 是由 Google 的工程師團(tuán)隊(duì)打造的一款移動(dòng) UI 框架,它使用的是 Google 自己開發(fā)的網(wǎng)絡(luò)編程語言——Dart 語言,因此,開發(fā)者只要使用過 Java 或 JavaScript 之類的語言,那么 Flutter 也極易上手。

Flutter 旨在幫助開發(fā)者創(chuàng)建擁有美觀 UI 界面、高性能、高穩(wěn)定、高幀率、低延遲的跨平臺(tái)(Android 和 iOS)移動(dòng)應(yīng)用。Flutter 的界面設(shè)計(jì)與 Web 應(yīng)用類似,所以開發(fā)者很容易在 Flutter 上找到類似 HTML/CSS 編碼的感覺。

和 React Native 相比,雖然使用的語言不同,但 Flutter 也提供響應(yīng)式的視圖。此外,F(xiàn)lutter 開發(fā)出來的應(yīng)用在不同的平臺(tái)用起來跟原生應(yīng)用具有一樣的體驗(yàn)。例如,返回圖標(biāo) Android 和 iOS 是不一樣的;滾動(dòng)內(nèi)容滾動(dòng)到底的反饋也是不一樣的。

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

Flutter 發(fā)展歷程

2017 年 Google I/O 大會(huì)上,Google 首次推出了一款新的用于創(chuàng)建移動(dòng)應(yīng)用的開源庫——Flutter;

2018 年初,Google 發(fā)布了 Flutter 的第一個(gè) beta 版本;

在今年 5 月的 Google I/O 大會(huì)上,F(xiàn)lutter 更新到了 beta 3 版本;

今天,F(xiàn)lutter 發(fā)布了首個(gè)預(yù)覽版,這意味著 Flutter 進(jìn)入了正式版(1.0)發(fā)布前的最后階段。

觀其發(fā)展,就在上個(gè)月,F(xiàn)lutter 進(jìn)入了 GitHub stars 排行榜前 100 名,如今已有 27k 個(gè) star。經(jīng)歷了短短一年的時(shí)間,F(xiàn)lutter 生態(tài)系統(tǒng)得以快速增長,活躍的 Flutter 用戶也增長了 50%。由此可見,F(xiàn)lutter 在開發(fā)者中受到了熱烈的歡迎,其未來的發(fā)展不容小覷。

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

Flutter 的優(yōu)勢

為何自 Flutter 發(fā)布以來,受到了諸多開發(fā)者較高的評價(jià)?自然與其優(yōu)點(diǎn)息息相關(guān):

高生產(chǎn)率:

  • 一套代碼可以開發(fā)出 Android 和 iOS 應(yīng)用;
  • 使用更少的代碼實(shí)現(xiàn)更多的功能,即使在單一的操作系統(tǒng)之上,使用更現(xiàn)代的、更具有表達(dá)性的開發(fā)語言及聲明方法,也可以完成更多的功能;
  • 開發(fā)原型和迭代更加方便;
  • 在應(yīng)用運(yùn)行的時(shí)候就可以修改代碼并重新加載(使用熱重載)修改后的功能;
  • 直接修改崩潰的 bug,然后繼續(xù)從崩潰的地方執(zhí)行調(diào)試;

創(chuàng)建優(yōu)雅的、可定制的用戶界面:

  • Flutter 內(nèi)置了對紙墨設(shè)計(jì)(Material Design)的支持,提供了豐富的 UI 控件庫可以用來創(chuàng)建紙墨設(shè)計(jì)風(fēng)格的 UI;
  • 提供了可定制的 UI 框架,不再受制于手機(jī)平臺(tái)控件的支持。

使用 Flutter 可以干什么?

快速開發(fā):

Flutter 的熱重載可幫助用戶快速地進(jìn)行測試、構(gòu)建 UI、添加功能并更快地修復(fù)錯(cuò)誤。在 iOS 和 Android 模擬器或真機(jī)上可以在亞秒內(nèi)重載,并且不會(huì)丟失狀態(tài)。

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

富有表現(xiàn)力,漂亮的用戶界面:

使用 Flutter 內(nèi)置美麗的 Material Design 和 Cupertino(iOS風(fēng)格)widget、豐富的 motion API、平滑而自然的滑動(dòng)效果和平臺(tái)感知,為開發(fā)者帶來全新體驗(yàn)。

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

現(xiàn)代的,響應(yīng)式框架

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

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

訪問本地功能和SDK

通過平臺(tái)相關(guān)的 API、第三方 SDK 和原生代碼讓開發(fā)者的應(yīng)用變得強(qiáng)大易用。 Flutter 允許開發(fā)者復(fù)用現(xiàn)有的 Java、Swift 或 ObjC 代碼,訪問 iOS 和 Android 上的原生系統(tǒng)功能和系統(tǒng) SDK。

訪問平臺(tái)功能非常簡單。以下是 interop example(互操作示例)中的一個(gè)片段:

Future<Null> getBatteryLevel() async { var batteryLevel = 'unknown'; try { int result = await methodChannel.invokeMethod('getBatteryLevel'); batteryLevel = 'Battery level: $result%'; } on PlatformException { batteryLevel = 'Failed to get battery level.'; } setState(() { _batteryLevel = batteryLevel; });}

統(tǒng)一的應(yīng)用開發(fā)體驗(yàn)

Flutter 擁有豐富的工具和庫,可以輕松地同時(shí)在 iOS 和 Android 系統(tǒng)中實(shí)現(xiàn)開發(fā)者想要完成的功能。即使開發(fā)者沒有任何的移動(dòng)端開發(fā)體驗(yàn), Flutter 也是一種輕松快捷的方式來構(gòu)建漂亮的移動(dòng)應(yīng)用程序。 如果開發(fā)者已是一位經(jīng)驗(yàn)豐富的 iOS 或 Android 開發(fā)人員,則可以使用 Flutter 作為視圖(View)層, 并可以使用已經(jīng)用 Java / ObjC / Swift 完成的部分(Flutter 支持混合開發(fā))。

Flutter 首個(gè)預(yù)覽版的發(fā)布

目前 Flutter 已發(fā)布了第一個(gè)預(yù)覽版。此次,F(xiàn)lutter 開發(fā)團(tuán)隊(duì)主要專注于讓 Flutter 適用于更多的應(yīng)用場景,并修復(fù) Bug 并讓 Flutter 更加穩(wěn)定。其中相比 beta 3 主要更新包括:

  • 增加了對帶有 ARMv7 指令集芯片的 32 位 iOS 設(shè)備的支持,使得 Flutter 兼容包括 iPad Mini 和 iPhone 5c 在內(nèi)的更多設(shè)備;
  • 完善了 video player package 以支持更多的視頻格式并變得更穩(wěn)定;
  • 支持了 Firebase 動(dòng)態(tài)鏈接(Dynamic Links)以支持跨平臺(tái)創(chuàng)建和處理鏈接;
  • 并進(jìn)一步改進(jìn)如何將 Flutter 小部件添加到現(xiàn)有 Android 和 iOS 應(yīng)用的文檔。

除此之外,Visual Studio Code 的 Flutter 擴(kuò)展新版本帶來了新的大綱視圖,語句完成以及直接從 Visual Studio Code 啟動(dòng)模擬器等功能。

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

Flutter 預(yù)覽版也從社區(qū)中得到了很多支持,來自外部的貢獻(xiàn)就包括 Flutter 對硬件鍵盤和條形碼掃描儀、視頻錄制、圖像的支持。此外,還有許多新軟件包對 Flutter 包站點(diǎn)的貢獻(xiàn),例如 Flutter Platform Widgets,一組可自適應(yīng) iOS 或 Android 的小部件; mlkit,F(xiàn)irebase MLKit API 的包裝類(wrapper); 序列動(dòng)畫(Sequence Animation)。

那么該如何更新呢?

如果你已經(jīng)在 beta channel 上了,只需要運(yùn)行一句命令:

$ flutter upgrade

如何更快上手學(xué)習(xí) Flutter?

就國內(nèi)而言,使用 Flutter 的用戶僅次于美國和印度,擁有世界第三多的 Flutter 用戶。國內(nèi)科技巨頭中,阿里巴巴基于 Flutter 開發(fā)的應(yīng)用程序已經(jīng)有了上千萬安裝量,騰訊也將使用 Flutter 推出 NOW 直播手機(jī)客戶端。那么國內(nèi)的開發(fā)者該如何快速上手 Flutter?

對此,F(xiàn)lutter 團(tuán)隊(duì)正式發(fā)布了中文 Flutter 網(wǎng)站:https://flutter-io.cn/。其中包含了源自社區(qū)的許多中文 Flutter 資料,從而幫助國內(nèi)開發(fā)者更好地使用 Flutter。

一套代碼iOS、Android兩端運(yùn)行,Google Flutter意味著什么?

此外,還可以通過以下資源進(jìn)行深入了解:

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

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,240評論 3 119
  • 你端起槍 天空是血紅色的 你放下槍 天卻下起了雨 梅花鹿奔跑著 你愛它 但你更愛你自己
    ANNAKK閱讀 298評論 0 0
  • 讀完這本書,讓我對心理學(xué)是一門“科學(xué)”還是“學(xué)科”有了更深的感受。按照百度解釋,“科學(xué)是一個(gè)建立在可檢驗(yàn)的解釋和對...
    Miya_wu閱讀 2,399評論 0 2
  • 不知不覺已經(jīng)到了需要相親的對象,雖然自我感覺年歲還小,但家里已經(jīng)十分著急的想把我“推銷”出去。 前幾天家里的朋友介...
    Ruth兔閱讀 420評論 1 0

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