- 原文地址:13 Reasons Why you should choose/ consider to move to Flutter
- 原文作者:Ganesh .s.p
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:YueYong
- 校對者:MeandNi
13 個你應該選擇/考慮使用 Flutter 的理由
13 個你應該轉向 Dart 並且選擇或者學習利用 Flutter 去開發你的下一個 app 的理由。
如今的企業需要在選擇移動技術時做出關鍵選擇。他們不斷的測試和評估技術,以求不論使用者使用什麼移動裝置或作業系統都能有強大的數字體驗。企業如果不能提供易於使用的產品和服務,那麼無論使用何種渠道或裝置,都有可能落後於競爭對手。
目前面臨的挑戰便是跨平臺應用的開發存在問題。在某些情況下,儘管開發人員盡了最大努力,其使用者體驗仍然落後於原生 app 。近年來,我們看到了各種移動框架的出現,如 React Native、Xamarin 和 AngularJS ,它們幫助我們更容易地產生較好地數字體驗。最近我們看到一個新玩家加入了這場遊戲——谷歌的 Flutter。
從內部來看,Flutter 看起來像是谷歌各種技術和概念的大雜燴,然而卻產生一個不可思議的強大的移動框架。它是基於 Dart (谷歌的內部程式語言)開發的,它可以讓 Flutter 訪問 Skia 圖形庫,而這正是 Chrome 瀏覽器所使用的。除此之外,Flutter 與谷歌的 Material Design 規範緊密結合;其中最著名的便是 Android 使用者已經熟知的“卡片圖案”。
讓我們看看 13 個選擇 Flutter 作為你的開發環境甚至可以選擇它開始你的職業生涯的理由,
1. Flutter 克服了傳統跨平臺的限制
長期以來,建立真正的跨平臺方法一直是技術顧問的苦惱所在,他們厭倦了為同一產品製作多個版本。但是,實際上,跨平臺應用的使用者體驗通常落後於原生 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、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。