何為 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)到底的反饋也是不一樣的。
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ā)展不容小覷。
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)。
富有表現(xiàn)力,漂亮的用戶界面:
使用 Flutter 內(nèi)置美麗的 Material Design 和 Cupertino(iOS風(fēng)格)widget、豐富的 motion API、平滑而自然的滑動(dòng)效果和平臺(tái)感知,為開發(fā)者帶來全新體驗(yàn)。
現(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)模擬器等功能。
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。
此外,還可以通過以下資源進(jìn)行深入了解:
- I/0 分享視頻:https://www.youtube.com/playlist?list=PL0o58xSX-Jvi6zBDe7SW4W6h5hauQ-xxF
- 技術(shù)周刊:https://flutterweekly.net/
- 實(shí)踐視頻:https://www.youtube.com/watch?v=syd0c9Vi2hg
- 開發(fā)視頻:https://www.youtube.com/watch?v=yr8F2S3Amas
- Github 地址:https://github.com/flutter/flutter
- Flutter 網(wǎng)站:https://flutter.io/
- Flutter - 不一樣的跨平臺(tái)解決方案:https://juejin.im/post/5afd77466fb9a07aab2a12da
- Flutter 初嘗:從 Java 無縫過渡:http://wuxiaolong.me/2018/03/08/Flutter/
- 最近用 Flutter 做了幾個(gè) APP:https://zhuanlan.zhihu.com/p/37232700