- 原文地址:13 Reasons Why you should choose/ consider to move to Flutter
- 原文做者:Ganesh .s.p
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:YueYong
- 校對者:MeandNi
13 個你應該轉向 Dart 而且選擇或者學習利用 Flutter 去開發你的下一個 app 的理由。前端
現在的企業須要在選擇移動技術時作出關鍵選擇。他們不斷的測試和評估技術,以求不論用戶使用什麼移動設備或操做系統都能有強大的數字體驗。企業若是不能提供易於使用的產品和服務,那麼不管使用何種渠道或設備,都有可能落後於競爭對手。android
目前面臨的挑戰即是跨平臺應用的開發存在問題。在某些狀況下,儘管開發人員盡了最大努力,其用戶體驗仍然落後於原生 app 。近年來,咱們看到了各類移動框架的出現,如 React Native、Xamarin 和 AngularJS ,它們幫助咱們更容易地產生較好地數字體驗。最近咱們看到一個新玩家加入了這場遊戲——谷歌的 Flutter。ios
從內部來看,Flutter 看起來像是谷歌各類技術和概念的大雜燴,然而卻產生一個難以想象的強大的移動框架。它是基於 Dart (谷歌的內部編程語言)開發的,它可讓 Flutter 訪問 Skia 圖形庫,而這正是 Chrome 瀏覽器所使用的。除此以外,Flutter 與谷歌的 Material Design 規範緊密結合;其中最著名的即是 Android 用戶已經熟知的「卡片圖案」。git
讓咱們看看 13 個選擇 Flutter 做爲你的開發環境甚至能夠選擇它開始你的職業生涯的理由,github
1. Flutter 克服了傳統跨平臺的限制web
長期以來,建立真正的跨平臺方法一直是技術顧問的苦惱所在,他們厭倦了爲同一產品製做多個版本。可是,實際上,跨平臺應用的用戶體驗一般落後於原生 app,由於你常常須要即時編譯 JavaScript 來構建 UI 體驗。數據庫
使用 Flutter,你不只能夠擁有「一次編寫」的優點,還能夠建立高性能的「原生」體驗,由於 Flutter 應用程序是提早編譯出機器可執行的二進制文件。它克服了其餘跨平臺方法中的一些常見問題。編程
2. 開發人員的生產力提升了十倍後端
這種生產力的提升來自 Flutter 的「熱重載」(也就是所謂的「有狀態的熱重載」和「熱重啓」)。這樣,開發人員能夠在不到一秒的時間內看到他們對應用程序狀態所作的更改;而且在不到 10s 的時間內改變 app 的結構。瀏覽器
沒有必要去啓動另外一個 Gradle 構建程序——由於你能夠在保存後查看你的修改。對於開發人員來講,這一般很容易掌握——在使用「熱重載」時幾乎沒有等待時間,由於在默認狀況下,每次保存時都會實時改變。
然而,優點是相當重要的。使用 Flutter 開發時間一般會減小 30-40%,由於在 Android 開發中,每次修改後 Gradle 都須要從新構建,這會下降 Android 開發人員的速度。
3. 先後端只需一套代碼
在 Android 編程中,前端( Views )有單獨的文件,由後端( Java )引用,與之不一樣的是,flutter 使用一種語言( Dart )來完成這兩項工做,並使用一個響應式框架。
Dart 借鑑了其餘語言衆多流行的特性,同時不會讓你感到陌生,由於它和 Java 或者其餘語言類似。Dart 的構建考慮了開發人員的易用性,從而使許多常見任務變得更加容易。你能夠在這學到更多有關 Dart 的知識: Dart 語言之旅.
4. 這是一種強大的開箱即用的設計體驗
因爲 Flutter 團隊對 Material design 規範的積極適配,使得開發者很容易就能夠建立出功能強大的 UI 體驗。它能夠幫助你生成一般只能在原生 app 中才能體驗到的平滑、流暢,由於 Flutter 的發行版構建的就是一個原生 app 。
Flutter 的小部件同時也實現了 iOS 的人機界面設計規範,可讓你在 iPhone 和 iPad 上也能得到那種原生的「體驗」。
5. 有一個數量衆多且開源的軟件庫
大量可用的開源包能夠幫助你更快、更輕鬆地建立應用程序,並且目前有許多可用的包可使許多複雜的任務變得更容易。
因爲不斷加入的開發人員對 Flutter 的做出的積極貢獻,因此即便這個開源庫還不夠成熟,但它依然在積極壯大。
6. 與 Firebase 的緊密結合
Firebase 爲雲存儲、雲功能、實時數據庫、託管、身份驗證等一系列服務提供開箱即用的支持。你的基礎設施徹底能夠是無服務器的、冗餘的和可擴展的。這意味着你沒必要花費大量時間和資源來構建後端。
它還能夠直接與一個工具結合使用來自動化你的開發和發佈過程以促進持續交付(例如 Fastlane)。所以,你沒必要在團隊中提供專門的 DevOps 支持。
7. 大量 IDE支持 Flutter
在使用 Flutter 進行編程時,你能夠從許多集成開發環境中進行選擇。一開始我使用的是 Android Studio,但後來我看 Flutter Live 時使用的是VS Code。這讓我很疑惑,由於我發現不少 Flutter 開發人員都在使用 Visual Studio Code。當我嘗試以後,我明白爲何這麼多人喜歡它了。 VS Code 相較於 Android Studio 和 IntelliJ 更加輕量,速度也快得多,而且具備二者中的大部分特性。就我我的而言,我已經轉向 VS Code,可是你也可使用許多其餘的 IDE ,你無需切換就能夠開始 Flutter 的工做。
8. UI聽從性——一切都是一個小部件
在 flutter 中,全部的東西都是一個小部件,例如 Appbar, Drawer, Snackbar, Scaffold 等等。開發者能夠很容易地將一個小部件包裝在另外一個小部件中以實現一些效果,例如將一個部件包裝在一個 Center 小部件中,就可讓其居中。
以上這些都是爲了確保你的用戶不管使用什麼平臺運行你的軟件均可以有相同的用戶體驗。你還應該閱讀下述 flutter 文檔:Everything’s a widget
9. Android/iOS 的不一樣主題
根據用戶的平臺分配正確的主題就像使用三元 if 檢查用戶正在運行的平臺同樣簡單;容許 UI 在運行時決定使用哪些 UI 組件。
下面是一個示例代碼,它用於檢查當前運行的平臺,若是是 iOS,它返回一個以紫色做爲主色調的主題。
return new MaterialApp(
// default theme here
theme: new ThemeData(),
builder: (context, child) {
final defaultTheme = Theme.of(context);
if (defaultTheme.platform == TargetPlatform.iOS) {
return new Theme(
data: defaultTheme.copyWith(
primaryColor: Colors.purple
),
child: child,
);
}
return child;
}
);
複製代碼
10. 使用 Code Magic 進行持續集成.
Code magic 是 2018 年 12 月 4 日在 Flutter Live 中使用的一個開源工具。Code magic 很容易學習,而且徹底免費!它是一種高度複雜的 CI 工具,專門針對 Flutter 進行了優化。 Code magic 使構建過程無縫對接。
運行中的 Code Magic
11. 2Dimensions 讓動畫製做更簡單
我第一次嘗試使用 Flutter + Flare——Bouncy
一樣是在 Flutter live 2018 期間推出的驚人的在線工具,能夠輕鬆建立很是棒的 UI 或動畫。它彌補了 UI 設計人員和開發人員之間的差距,減小了應用 UI 或動畫相關更改所需的時間。
Flare的學習曲線很淺,我在使用了它以後,對建立動畫的簡單性感到驚訝! 你能夠看到 app 在這裏工做,我甚至在球上加了一個反射,給它一個更逼真的外觀。
12. 運行在桌面和 Web 端的 Flutter
Flutter 團隊如今已經有了能夠在 web 瀏覽器中工做的 Flutter 原型 app ,這讓全部人都感到震驚。在 Flutter Live 中,以前的絕密項目 「Hummingbird」 向世界公開。很快,你就可使用相同的代碼輕鬆地爲移動端、桌面端和 web 端建立應用程序。
13.來自 Flutter 團隊和 Flutter 社區的持續支持
在過去的三週裏,我一直在用 Flutter 工做,並注意到來自 Flutter 團隊和社區的不少支持和鼓勵;尤爲是 Scott Stoll, Nilay Yener 和 Simon Lightfoot(僅舉幾個例子)。每一個星期三,Flutter 社區中許多比較知名的名字均可以在 Zoom at #HumpDayQandA 上看到,在那裏你能夠實時獲取來自真人的有關 Flutter 的幫助。即使你沒有任何問題,那也是一個很好的地方,由於你能夠從他們回答別人的問題中學到不少。
這是我參加 #HumpDayQandA 的照片。 來自 Flutter Egypt 的創始人,谷歌開發者 Amed Abu Eldahab的推文。
使用 Flutter 的價值很明顯,也頗有吸引力,由於它減輕了初創公司試圖將產品發佈到多個平臺所面臨的許多困難;特別是處理在有限的時間和預算內將軟件產品推向市場的時候。
你們好,我是 Ganesh S P. ,是一名經驗豐富的 Java 開發人員,具備普遍的創造性思惟,同時是一名企業家和演說家,如今正冒險進入 Flutter 的世界。你能夠在 LinkedIn 或者 github 找到我,或者關注個人 twitter_。在空閒時間,我是一名在 GadgetKada 上的內容創造者。你也能夠給我發郵件ganesh.sp006@gmail.com討論任何有關科技的話題。
感謝 Nash 和 Scott Stoll.
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。