~/VibeHandbook
免費 PDF

應用 / 行動端

flutter.dev

Flutter

是什麼

先打個比方:"跨平臺"就像用同一份菜譜,在每個廚房裡都做出同一道菜,而不是為每一個爐灶都從頭重寫一遍做法。Flutter 是 Google 推出的開源 UI(使用者介面,螢幕上看得見、可互動的部分)工具包,用 Dart 語言編寫單一程式碼庫即可構建跨平臺應用。與那些複用裝置自帶的螢幕控制元件的方案不同,Flutter 用自己的渲染引擎繪製每一個畫素,因此 UI 在 iOS、Android、web 和桌面上的外觀與行為完全一致。它開箱即帶一套豐富的 Material 和 Cupertino 控制元件。

優勢

  • 一份 Dart 程式碼庫即可面向 iOS、Android、web 和桌面,且結果一致。
  • 自帶渲染引擎意味著各處 UI 畫素級精確、完全相同。
  • 就像你編輯一份文件時改動會立刻顯現、無需重新開啟檔案那樣,有狀態熱過載(Stateful Hot Reload)讓迭代極其快速。
  • 龐大而精良的控制元件庫以及強大的工具鏈。
  • 非常適合定製化、品牌感強、動畫豐富的介面。

取捨

  • 需要學習 Dart,這門語言幾乎只用於 Flutter。
  • 應用二進位制體積更大,因為引擎會隨應用一起打包。
  • 由於自行繪製控制元件,平臺原生外觀的更新可能滯後。
  • 深度的平臺整合仍需通過外掛使用原生(Swift/Kotlin)程式碼。

何時使用

當你希望由一個團隊在眾多平臺上交付一款高度精緻、視覺一致的應用時——尤其是當定製化設計和流暢動畫比精確匹配每個 OS(作業系統,裝置的核心軟體,如 iOS 或 Android)的原生控制元件更重要時——可以選擇 Flutter。

與 vibe coding 的契合度

Flutter 與 AI 助手配合得很好,因為一切都是由清晰樹狀結構組合而成的 widget,而熱過載讓你在幾秒內就能驗證生成的 UI。可以讓模型把樹拆分成小而專注的 widget,讓狀態管理保持顯式(例如單一狀態類或一個廣為人知的包),並優先使用 const 建構函式以提升效能。由於框架是自包含的,生成的程式碼很少依賴脆弱的原生配置。

class Counter extends StatefulWidget {
  @override
  State<Counter> createState() => _CounterState();
}

class _CounterState extends State<Counter> {
  int count = 0;
  @override
  Widget build(BuildContext context) => Column(children: [
        Text('Count: $count'),
        ElevatedButton(
          onPressed: () => setState(() => count++),
          child: const Text('Add'),
        ),
      ]);
}