【專訪】Writemoo 犢創:靈感捕手隨時創作 App

捕捉每個轉瞬即逝的靈感,變成你的獨創故事。

Chloe Hsu
Flutter Taipei
8 min readNov 8, 2020

--

當你享受著美食、去上班的路途、在捷運中通勤,每分每秒隨都有靈光乍現的瞬間。你可能是個全職作家、可能正走在成為作家的路上又或者單純喜歡寫作,在文字世界裡遨遊。

創作,是一種心理解壓的管道。

創作,是將腦海中,大膽、狂野、奇幻的點子說故事的說書人

靈感這東西,不單單只是坐在電腦面前而立馬湧上。

它,不是說來就來,但來的時候也突如其來。

圖片來源:Writemoo 犢創 App Logo

Writemoo 犢創

Writemoo 犢創是個專為行動創作設計的 App,你可以隨時隨地開始創作,利用每個零碎片刻延續創作,將自己的創作透過 App 即時發表,閱讀其他創作者最新的進度。快速、方便地將作品轉為標準規格的電子書,直接在電子書通路上架販售。

特色

1. 可在 App 上直接創作,隨時記錄靈感

2. 行動版+桌機版,創作無縫接軌

3. 隨時更新其他創作者進度

4. 與讀者直接互動

5. 直接在社群網站宣傳自己的作品

6. 行動閱讀

快速、方便閱讀

App 的主畫面中,可以看到許多創作者的作品。當你在閱讀作品時,同時能夠留下你的評論,作者知道你對作品的感受和鼓勵!除了閱讀之外,你也可以方便地下載作品!

隨時隨地創作

還在每天想著時間不夠,朝九晚五又加班、忙著準備考試跟三五好友聚會好滿檔,但心裡總有顆創作的心不安份地跳動著。

「啊!就是這個…」

「啊!這個好這個好,要趕快寫下來才行…」

開啟 Writemoo,簡單地一按,把靈感寫下來。

犢創技術 Q&A

1. 為什麼決定採用 Flutter 技術來開發呢?大約花多久時間評估決定使用的技術?

因為原本的 App 很久沒更新,而 App 本身的功能不會太複雜,很適合用來嘗試跨平台的技術。加 上 Flutter 的社群茁壯與相關資源多,也有前輩已上架 App 的例子,所以沒花太多時間便決定使用 了。

2. 可以跟我們分享團隊 1 年半大家一起研究 Flutter 的過程和方式嗎 ?

固定每週五有 Code Review 時間會聚在一起討論。

常利用到的資源,主要是:

  • 官網文件
  • Youtube 頻道
  • 關注 Flutter 相關的 Twitter 帳號
  • 加入 Facebook 社群
  • 中國的闲鱼技术等等。

對於方便了解 Widget 功能的工具:

  1. Flutter Unit
  2. Flutter Widget Livebook

3. 有多少人一起投入開發?大家是什麼樣的背景?

主要由一個人開發程式(iOS 背景),一位 UI/UX 設計師重新設計 App,公司原本就有 Android/iOS 工程師,若遇到各平台的問題,都能互相支援。

4. 團隊花了多少時間時間開發?

從評估開發到正式上架,大約八個月。

5. 團隊的 Flutter App 使用的後端是第三方服務還是自架後端?並還有用到哪些第三方服務?

目前是用 Parse 。使用這個的原因,是因為歷史的包袱 XD,之後有時間的話會換;目前在使用這個 SDK 上還 算簡單,主要操作 ParseObject、ParseResponse、ParseUser,用 ParseACL 管理 Write/Read 權限,有碰到幾個地方,要注意的是:

1. 無法轉型 nest custom object,需要 workaround

2. 寫測試時用到 ParseObject,需初始化一些設定,不然會報錯,記得直接去參考他們的範例

3. 目前沒有支援 push notifcation

6. 團隊之前有使用非 Flutter 的技術開發 App 的經驗嗎?使用 Flutter 後,在團隊協作或產出方面, 有想分享的經驗嗎?

沒有耶,不過在產出方面,後來有看到像 Android Studio 有許多 shortcut還蠻方便的,是增進生產力的小幫手 !

7. 決定使用 Flutter 技術時有什麼擔憂嗎?

像是怕遇到各平台發生不一致的行為或 bug,或是沒有相關資源去解決遇到的問題。

8. 如何評估適合的架構模式,並取得共識並決定採用呢?

主要先認識幾個比較常見的架構,然後看 BLoC 的概念還滿簡單的,且是 Google 推薦過的,也有很多相關資源可以參考,也易於測試,最後就採用這個來實作。

9. 承上題,團隊在 Flutter App 使用的架構模式,以你們的實際經驗來說,有什麼樣的優缺點嗎?

使用相關的套件有:

1. flutter_bloc:使用它已實作好的 Bloc Widgets

2. equatable:用來判斷相同的 Event 和 State

3. bloc_test:用來作 Bloc 相關測試

缺點的話,像是在簡單的場景就不會使用 bloc,不然都要產生對應的 bloc, event, state 等,這時就會考慮改用 cubit,或是單純 setState { }、FutureBuilder 等就能解決。

另外,有遇到跟切換 UI 有關的邏輯,一開始用 bloc 去控制,但會有時間差的問題,這時候分開處理會比較好,不然使用者快速點擊的情況下,畫面會沒有這麼即時反應。

10. 用 Flutter 開發時,什麼事讓你們覺得最有挑戰性/最困難?

應該就是遇到不同平台、機器發生不一致的行為,而且也沒有找到相關問題的資源。

11. 在 Flutter 與 Native 之間跨平台溝通有沒有踩到什麼坑或是經驗分享呢?

在使用 webview_flutter 處理 webView 點擊事件時,發現在兩個平台有不同行為,像是在 iOS 裝置上遇到點擊特定區域後,畫面變磚的問題,最後是透過監聽 js click 事件來解決。

還有遇到 webView 載入時會有畫面閃爍的問題,目前是用 Opacity workaround。

12. 你們的 Flutter App之中有想特別介紹的技術嗎?

簡單介紹幾個有使用的套件:

1. device_preview:用來方便切換,檢查在不同螢幕尺寸下的畫面 UI

2. flutter_stetho:用來看 network response,等官方 DevTools 的 Network 支援能看到 response 內容,就會考慮拿掉了

3. logger:讓 console log 更易讀與把 log 分級別,但要注意在有些 IDE 出現色碼的問題

13. 有使用任何 CI/CD 工具嗎?可以跟我們分享使用的工具嗎?為什麼選擇該工具?

目前有用 Bitrise,操作介面很直覺,而且目前使用免費的方案就夠用了。

14. 如果可以重新選擇開發技術,還是會選擇用 Flutter 嗎?

會,尤其在刻 UI 方面,熟悉常用的 widget 後,開發起來真的很方便又迅速。

15. 推薦什麼樣的 App 使用 Flutter?如果團隊決定使用 Flutter 來開發,有什麼建議想給大家嗎?

像是可以先從單純呈現畫面、不會需要使用各平台最新 API 的功能的 App 切入,並可以嘗試做 package、plugin、module。如果團隊原本就有 iOS/Android 工程師就再好不過了,最後能在社群多多分享踩坑經驗,造福大家

16. 團隊現在或未來打算招募 Flutter 工程師嗎?

目前還沒有,但歡迎大家使用 Readmoo 相關服務!

工程師資訊

想說的話…

因為在寫 swift 時已習慣 optional 的概念,所以很期待 Dart 的 Null Safety,並希望 enum 也能和 swift 的一樣強大。

如果你想跟工程師討論…

歡迎直接到 Dan 的 Twitter 討論技術!

Dan’s Twitter

團隊 & 產品資訊

前往 App Store 下載 App
前往 Play Store 下載 App

歡迎閱讀「台灣 Flutter App 蒐集企劃」以了解完整計畫資訊哦!

--

--