企業級Flutter專案-走出第一步

會煮咖啡的貓發表於2021-05-14

老鐵記得 轉發 ,貓哥會呈現更多 Flutter 好文~~~~

微信 flutter 研修群 ducafecat

原文

matteozajac.medium.com/flutter-in-…

參考

正文

大多數時候你必須為你的應用程式的技術債務付款。如果你在 MVP 之後沒有良好的體系結構,那麼現在是時候停下來,重構一下,讓你的未來變得更加容易。事實上,在沒有架構的情況下編寫較小的應用程式更容易---- 很難不同意這一點---- 但是作為一個成熟的技術專家來考慮。

測試覆蓋率,設計模式,程式碼分析,這些都是我正在考慮的。本文將介紹我們如何在提高程式碼質量和團隊愉悅感的同時,交付出色的應用程式。

從架構開始

Provider, BLoC, Redux ーー如果這些詞聽起來不熟悉,請在繼續前進之前對它們有基本的瞭解。

它們都有優點和缺點,你可以自己選擇。

擁有 Flutter 的知識和如何人們已經適應專案結構 BLoC 似乎是最簡單的方式開始。

恕我直言,展示和理解 BLoC 如何工作的最好方式是看下面的圖表。

  • 表示層將事件傳送到 BLoC
  • 資料層非同步執行較長的操作,例如從 API 或資料庫獲取資料
  • 對使用者介面產生返回值

就這麼簡單。

自己實現 BLoC 模式這真的是很好的鍛鍊,你應該一次性完全理解它背後的流程。如果你已經這樣做了

然後使用..。

BLoC 庫

幸運的是,社群沒有讓人失望。你不必每次都寫 BLoC,只需使用這個方便的 library ー FlutterBloc。

我想指出幾個關鍵特徵:

  • Event — 沒有樣板的事件-狀態通訊,
  • Dependency 依賴注入通過 BlocProvider,
  • BlocBuilder 根據接收的狀態構建小部件,
  • BlocDelegate 使全域性處理錯誤更加容易,
  • BLoC 可以(也應該)進行測試

pub.dev/packages/fl…

採用 REST API

如果你建立了一個移動應用程式,你將連線到一個遠端資料來源。最常用的方法是 REST api 和 JSON。當然,你已經這樣做了很多次,所以沒有更多的解釋。

來自 Android world 的訊息表明你已經使用過 Retrofit、 GSON 或莫希 JSON 轉換器。這些真的是非常棒的工具。

Flutter 中使用 chopper 庫

pub.dev/packages/ch…

在這兩種情況下,您都需要為您的 API 定義抽象類,並使用 flutter pub run build_runner build 生成它。

接下來,沒有類似 GSON 的庫可以將 JSON 轉換為 POJO。您需要編寫自己的對映器函式,或者使用 json_serializable,它通過註釋 Dart 類自動生成轉換到 JSON 和從 JSON 轉換的程式碼。這個過程本身非常簡單,你肯定會習慣的。

pub.dev/packages/js…

本地持久化

在大多數情況下,當需要快取我們的資料時,Sqflite 是我們的首選。它只是一個 SQLite Dart 實現,支援:

  • 原始 SQL 查詢,
  • 插入/查詢/更新/刪除的方便助手,
  • 批次ー避免效能問題。

分析程式碼

在專案中擁有並保持程式碼樣式對於團隊來說可能是至關重要的。與體系結構一樣,它也是維護專案和團隊成員之間的質量、一致性的關鍵因素。

預設情況下,ide 整合了預設的靜態分析,您可以根據需要擴充套件和調整這些分析。在他們的文件中很好地描述了 Effective 有自己的線頭規則ーー Effective Dart。如果您喜歡這種風格(我確實喜歡) ,來自 Google 的開發團隊就建立了一個帶有這種規則集的包(pedantic | Dart 包)

值得一提

手動檢查每個包的版本可能有點煩人。對於 Android Studio 使用者,你可以檢視這個外掛 Flutter Pub Version Checker ー For IntelliJ IDEA,Android Studio 為你提供。突出顯示帶有新版本的軟體包非常方便。

plugins.jetbrains.com/plugin/1240…

待續

這是一個關於我們公司內部使用的庫和方法的快速總結。如果你正在尋找一些開始點,它也應該有助於你的專案,但作為 Flutter 已經演變,我們有許多可行的解決方案,共同的問題,這只是其中之一。在下一篇文章中,我將展示體系結構圖,解釋特定的層,並實現一個列表螢幕(從遠端、本地持久化獲取)。


© 貓哥

ducafecat.tech/

github.com/ducafecat

往期

開源

GetX Quick Start

github.com/ducafecat/g…

新聞客戶端

github.com/ducafecat/f…

strapi 手冊譯文

getstrapi.cn

微信討論群 ducafecat

系列集合

譯文

ducafecat.tech/categories/…

開源

ducafecat.tech/categories/…

Dart 程式語言基礎

space.bilibili.com/404904528/c…

Flutter 零基礎入門

space.bilibili.com/404904528/c…

Flutter 實戰從零開始 新聞客戶端

space.bilibili.com/404904528/c…

Flutter 元件開發

space.bilibili.com/404904528/c…

Flutter Bloc

space.bilibili.com/404904528/c…

Flutter Getx4

space.bilibili.com/404904528/c…

Docker Yapi

space.bilibili.com/404904528/c…

相關文章