做者 | 屠敏
一套代碼可支持 Android 和 iOS 雙端運行,你 Get 了嗎?
它就是 Flutter。其目標是爲了解決移動中的兩個重要問題:一是實現原生應用的性能和與平臺的集成,二是提供一個多平臺,可移植的 UI 工具包來支持高效的應用開發。git
「Flutter 可幫助你更容易、更快速的開發出界面美觀的移動應用。」Google 官方如是說。github
實則,Flutter 是由 Google 的工程師團隊打造的一款移動 UI 框架,它使用的是 Google 本身開發的網絡編程語言——Dart 語言,所以,開發者只要使用過 Java 或 JavaScript 之類的語言,那麼 Flutter 也極易上手。面試
Flutter 旨在幫助開發者建立擁有美觀 UI 界面、高性能、高穩定、高幀率、低延遲的跨平臺(Android 和 iOS)移動應用。Flutter 的界面設計與 Web 應用相似,因此開發者很容易在 Flutter 上找到相似 HTML/CSS 編碼的感受。編程
和 React Native 相比,雖然使用的語言不一樣,但 Flutter 也提供響應式的視圖。此外,Flutter 開發出來的應用在不一樣的平臺用起來跟原生應用具備同樣的體驗。例如,返回圖標 Android 和 iOS 是不同的;滾動內容滾動到底的反饋也是不同的。微信
2017 年 Google I/O 大會上,Google 首次推出了一款新的用於建立移動應用的開源庫——Flutter;網絡
2018 年初,Google 發佈了 Flutter 的第一個 beta 版本;app
在今年 5 月的 Google I/O 大會上,Flutter 更新到了 beta 3 版本;框架
今天,Flutter 發佈了首個預覽版,這意味着 Flutter 進入了正式版(1.0)發佈前的最後階段。async
觀其發展,就在上個月,Flutter 進入了 GitHub stars 排行榜前 100 名,現在已有 27k 個 star。經歷了短短一年的時間,Flutter 生態系統得以快速增加,活躍的 Flutter 用戶也增加了 50%。因而可知,Flutter 在開發者中受到了熱烈的歡迎,其將來的發展不容小覷。編程語言
爲什麼自 Flutter 發佈以來,受到了諸多開發者較高的評價?天然與其優勢息息相關:
高生產率:
建立優雅的、可定製的用戶界面:
快速開發:
Flutter 的熱重載可幫助用戶快速地進行測試、構建 UI、添加功能並更快地修復錯誤。在 iOS 和 Android 模擬器或真機上能夠在亞秒內重載,而且不會丟失狀態。
富有表現力,漂亮的用戶界面:
使用 Flutter 內置美麗的 Material Design 和 Cupertino(iOS風格)widget、豐富的 motion API、平滑而天然的滑動效果和平臺感知,爲開發者帶來全新體驗。
現代的,響應式框架
使用 Flutter 的現代、響應式框架,和一系列基礎 widget,輕鬆構建您的用戶界面。使用功能強大且靈活的 API(針對 2D、動畫、手勢、效果等)解決艱難的 UI 挑戰。
class CounterState extends State<Counter> { int counter = 0; void increment() { // 告訴Flutter state已經改變, Flutter會調用build(),更新顯示 setState(() { counter++; }); } Widget build(BuildContext context) { // 當 setState 被調用時,這個方法都會從新執行. // Flutter 對此方法作了優化,使從新執行變的很快 // 因此你能夠從新構建任何須要更新的東西,而無需分別去修改各個widget return new Row( children: <Widget>[ new RaisedButton( onPressed: increment, child: new Text('Increment'), ), new Text('Count: $counter'), ], ); } }
訪問本地功能和SDK
經過平臺相關的 API、第三方 SDK 和原生代碼讓開發者的應用變得強大易用。 Flutter 容許開發者複用現有的 Java、Swift 或 ObjC 代碼,訪問 iOS 和 Android 上的原生系統功能和系統 SDK。
訪問平臺功能很是簡單。如下是 interop example(互操做示例)中的一個片斷:
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; }); }
統一的應用開發體驗
Flutter 擁有豐富的工具和庫,能夠輕鬆地同時在 iOS 和 Android 系統中實現開發者想要完成的功能。即便開發者沒有任何的移動端開發體驗, Flutter 也是一種輕鬆快捷的方式來構建漂亮的移動應用程序。 若是開發者已經是一位經驗豐富的 iOS 或 Android 開發人員,則可使用 Flutter 做爲視圖(View)層, 並可使用已經用 Java / ObjC / Swift 完成的部分(Flutter 支持混合開發)。
目前 Flutter 已發佈了第一個預覽版。這次,Flutter 開發團隊主要專一於讓 Flutter 適用於更多的應用場景,並修復 Bug 並讓 Flutter 更加穩定。其中相比 beta 3 主要更新包括:
除此以外,Visual Studio Code 的 Flutter 擴展新版本帶來了新的大綱視圖,語句完成以及直接從 Visual Studio Code 啓動模擬器等功能。
Flutter 預覽版也從社區中獲得了不少支持,來自外部的貢獻就包括 Flutter 對硬件鍵盤和條形碼掃描儀、視頻錄製、圖像的支持。此外,還有許多新軟件包對 Flutter 包站點的貢獻,例如 Flutter Platform Widgets,一組可自適應 iOS 或 Android 的小部件; mlkit,Firebase MLKit API 的包裝類(wrapper); 序列動畫(Sequence Animation)。
那麼該如何更新呢?
若是你已經在 beta channel 上了,只須要運行一句命令:
$ flutter upgrade
就國內而言,使用 Flutter 的用戶僅次於美國和印度,擁有世界第三多的 Flutter 用戶。國內科技巨頭中,阿里巴巴基於 Flutter 開發的應用程序已經有了上千萬安裝量,騰訊也將使用 Flutter 推出 NOW 直播手機客戶端。那麼國內的開發者該如何快速上手 Flutter?
對此,Flutter 團隊正式發佈了中文 Flutter 網站:https://flutter-io.cn/。其中包含了源自社區的許多中文 Flutter 資料,從而幫助國內開發者更好地使用 Flutter。
此外,還能夠經過如下資源進行深刻了解:
閱讀更多
微信公衆號:終端研發部