最近在想,幫 Flutter App 挑 Icon 好像變成一件蠻麻煩的事。以前沒得選,用 Google 的 Material 就對了。現在… 哇,選擇多到有點不知所措。
老實說,每個專案的需求都不太一樣,有時候要的是快,有時候要的是風格。所以這篇不是要給你一個「最強」的答案,比較像是我自己整理思緒的筆記,看看現在市面上有哪些選擇,然後… 該怎麼挑才不會選完又後悔。
重點一句話
如果你懶得看,我自己是覺得,新的專案可以直接試試看 Hugeicons,它的量跟彈性真的沒話說。但如果是要跟系統風格高度整合,那 Material 或 Cupertino 依然是安全牌。
現在主流的幾個 Icon Library,我是這樣看的
我把它們分成幾類,這樣比較好思考。
第一類:巨無霸,什麼都有的類型
這類的代表就是 Hugeicons。我第一次看到它的時候,印象就是「多」。真的很多,號稱有三萬七千多個圖示。這什麼概念?就是你專案裡大概一輩子都用不完。
它好的地方是風格統一,而且變化超多。同一個「首頁」圖示,它有線條的、填色的、雙色的、圓角的、尖角的… 各種排列組合。這樣的好處是,不管你的 App UI 設計風格怎麼變,總能找到一個搭得起來的。不用像以前一樣,A 圖示用 Material 的,B 圖示找不到,只好自己畫或去別家找,結果整個 App 風格看起來亂七八糟。
它還有超過四千個是免費的,對於小專案或想先試試水溫的人來說,我自己是覺得蠻佛心的。安裝也很簡單,就是標準的 pub.dev 流程。
# pubspec.yaml
dependencies:
hugeicons: ^0.0.7
然後 flutter pub get,就可以用了。
// 在你的 Dart code 裡面
import 'package:hugeicons/hugeicons.dart';
// ...
HugeIcon(
icon: HugeIcons.strokeRoundedHome01, // 這邊換成你要的圖示
color: Colors.blue, // 顏色可以自己調
size: 24.0, // 大小當然也可以
),
// ...
說真的,這種用法還蠻直覺的。
第二類:平台原生風格
這就是老朋友了。Material Icons 跟 Cupertino Icons。
- Material Icons:Google 自家的東西,只要你的 App 想走 Material Design 風格,用它基本上不會錯。優點是跟 Flutter 內建的元件很搭,很和諧。缺點嘛… 就是長得太「Google」了,看久了有點膩,而且每個 App 都長一樣,沒什麼特色。
- Cupertino Icons:這個是 Flutter 官方出的,專門用來模仿 Apple 的 iOS 風格。如果你想讓你的 App 在 iPhone 上看起來「很原生」,那用這個就對了。不過啊,它的圖示數量就比 Material 少很多,有時候會找不到你要的。
還有一個比較新的,FluentUI System Icons。這是微軟的設計風格,如果你做的 App 目標平台包含 Windows,或是你特別喜歡 Fluent Design 那種半透明、光影的感覺,那就可以考慮它。說真的,它的圖示質感做得蠻好的,很現代。
這類 Icon Library 的好處是… 不用多想。你的 App 目標是什麼平台,就用那個平台的設計語言,使用者一看就懂。這點跟我們在台灣的開發習慣也蠻像的,我看 `iT邦幫忙` 很多討論也都會建議,如果沒有特別的設計需求,跟著平台走是最安全的路。
第三類:獨特風格,講求設計感
這類就比較多了,適合那些不想跟別人一樣,想讓 App 有點個性的專案。
- Feather Icons:我個人蠻喜歡的。它的風格就是極簡、輕巧,線條很細。用在一些設計簡約、留白很多的 App 上面,會非常有質感。但缺點也是因為太簡約了,如果你的 App 畫面很複雜,它可能會被「吃掉」,看不清楚。
- Iconoir:這是一個開源的 library,裡面的圖示也有一千多個。它的風格… 怎麼說呢,有點獨特,不是那種常見的樣式。如果你想找一些比較不一樣的圖示,可以來這裡挖寶。
- Eva Icons:這個也很多人用,它的圖示數量蠻多的,風格介於 Material 和 Feather 之間,算是個中規中矩但又有點設計感的選擇。
這類 Library 的問題通常是,圖示數量可能沒那麼完整。還有,它們的風格很強烈,如果你的 App UI 沒有好好搭配,有時候反而會顯得突兀。
所以… 到底怎麼挑才不後悔?
每次開新專案,我大概會用下面這個表格來幫助自己思考。這不是什麼標準答案,但可以避免自己憑感覺亂選。
| 考量點 | Hugeicons (巨無霸型) | Material / Cupertino (平台原生型) | Feather / Iconoir (風格型) |
|---|---|---|---|
| 圖示數量 | 多到用不完。基本不用擔心找不到圖。 | 夠用,但不會太多。有時候比較冷門的就需要自己找了。 | 通常最少。可能需要混搭,但這樣就失去統一風格的意義了… |
| 風格彈性 | 超高。一個圖示給你一堆變體,圓角尖角、線條填色都有。 | 幾乎沒有。就是要你跟著它的設計規範走。 | 風格很固定。你就是為了這個風格才選它的,對吧? |
| 上手難度 | 算簡單。就是 pub get 然後用 widget。但圖示太多,找起來要花點時間。 | 最簡單。很多是內建的,直接 `Icons.xxx` 就出來了。 | 一樣是 pub get。但有些可能文件沒寫那麼好,要自己摸索一下。 |
| 適合誰用 | 需要高度客製化、功能複雜、或不想花時間煩惱圖示的專案。 | 想快速開發、追求原生體驗、或公司有嚴格設計規範的專案。 | 設計師主導的專案,或是個人作品,想強調獨特視覺風格。 |
| 我個人碎碎念 | 量大就是正義。雖然找圖要花點時間,但找到之後的滿足感很高。 | 安全牌。但有時候會覺得 App 做出來沒什麼靈魂… 就是個 App。 | 用對了會超加分,很有品味。但用錯了… 會有點像穿了不合身的衣服。 |
最後的一點想法
選 Icon Library 其實沒有對錯,重點還是回歸到你的專案本身。你的 App 是給誰用的?想給人什麼感覺?開發時間有多趕?
我自己的習慣是,如果時間很趕,或是客戶就是想要一個「看起來很正常」的 App,那我就會用 Material 或 Cupertino,快速解決。但如果是我自己的 side project,或者是一個想做得比較精緻的產品,我就會花點時間在 Hugeicons 或 Feather Icons 這類 library 裡面慢慢挑,找出最適合的風格。
就像你去餐廳吃飯,有時候想吃快速方便的速食,有時候想吃精緻的套餐。工具本身沒有好壞,端看你當下的需求是什麼。嗯… 大致上是這樣吧。
對了,如果這些 library 真的都找不到你想要的,還有像 `icon.kitchen` 這種工具可以讓你自製 icon,不過那就又是另一個故事了,需要花費的工時完全不是一個等級的。
換作是你,你會怎麼選?
看完這幾種類型,如果現在要開發一個新的 App,你會優先考慮哪一種類型的 Icon Library?
- A) 效率優先,用 Material/Cupertino 就好。
- B) 彈性跟完整度最重要,試試看 Hugeicons。
- C) 設計感第一,我願意花時間找像 Feather 這種風格獨特的。
在下面留言分享你的選擇和理由吧!
