iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
Mobile Development

Flutter 30: from start to store系列 第 29

我發佈了我的第一個APP,下一步呢?

  • 分享至 

  • xImage
  •  

我們終於完成了第一個App,掌握了從開發到上架的最基本流程!
但是App有許許多多的面向,我們來看看App還可以怎麼做


多語系

  • internatinalization,俗稱i18n。在App加入多種語言,對世界各地的使用者更友善。
  • 官方推薦的套件是flutter_localizations,詳細設定和安裝可以看
    這篇

更複雜的state management

  • 我們這次練習使用的Provider結構較為簡單,要使用跨widget的state要一層一層傳遞,當App架構變得更複雜,層級變得更多之後,使用Provider會是一個較麻煩且沒有效率的做法
  • 好在官方有推薦其他的state management package:
    • Redux: 同網頁開發用的Redux
    • MobX:蠻有名的state management工具,基於observable
    • GetIt: 基於 Service Locator 設計模式的狀態管理工具
    • Bloc: bloc作為viewmodel的observable state management
    • Riverpod:Provider 的進階版,state可以脫離widget傳遞和保存

手機功能

  • GPS: 透過 geolocator 可以開啟定位功能,偵測使用者的位置來進行App操作。
  • 相機:camera可以在App內調用雙系統的相機拍照
  • 生物辨識:使用 local_auth開啟指紋辨識或臉部辨識功能,讓使用者認證更方便。
  • 相簿:image picker: 可以在App中挑選相簿中的照片
  • 行事曆: 當有事件要加到手機內的行事曆,add_2_calendar會是你的好夥伴。
  • 錄音:flutter_sound可以調用手機麥克風,為App提供錄音功能
  • 推播通知 : Firebase messaging 整合了iOS和android的推播中心服務,加入後就可以在App中寫推播功能。

測試

  • 要確保程式碼的品質,測試是不可或缺的一環。可以使用 官網推薦的套件test

    import 'package:counter_app/counter.dart'; // 要測試的widget
    import 'package:test/test.dart'; // test library
    
    void main() {
    
      // 每一個test是一個測試案例
      test('Counter value should be incremented', () {
        final counter = Counter();
    
        counter.increment();
    
        expect(counter.value, 1);
      });
    }
    
  • 如果是要直接看到widget樣式和效果的測試的話,可以使用storybook flutter,和一般測試不同的是,storybook會直接渲染刻好的widget,我們可以直接跟widget互動,而不是用程式碼來測試widget的input/output


佈建

  • obfuscation: 在程式碼打包時,為了避免有心人士使用打包完成的app進行反編譯等逆向工程,會進行obfuscation,也就是混淆程式碼。這會隱藏真實的變數和函式名稱讓人難以閱讀,從而不清楚app真正的編寫邏輯。
    android知名的obfuscating tool是 Proguard,而在flutter上見 Obfuscating Dart code
  • 自動化部屬: 開發完app接著就是打包上架的流程,程式碼每修改一次,就要重新打包上架一次;那有沒有辦法能夠不用每次都手動操作打包上架流程,讓程式碼改好就自己上架呢? 有的,我們可以使用 fastlane 來自動化打包和簽署的行為,並配合其他CI/CD工具部屬到特定的地方(私有的雲端倉庫或者商店),見Continuous delivery with Flutter

App監控

  • 在App中加入firebase相關的功能,用以分析App用戶目前的狀況,便於作出優化/除錯/市場分析等行為
  • Analytics:可以在App中加入tag,分析哪些元件、哪些頁面的點擊率最高最受用戶歡迎。
  • Crashlytics:用戶手中的App若有當機或者運行時發生的錯誤,會回傳到雲端的後台讓開發者知道,及早搶修問題。
  • Remote config: 可以在雲端調整參數,改變App的行為/樣式。

Recap

寫一個App絕對不會只有這次示範的這麼簡單,還有好多有趣的功能待各位探索呢。接下來,就靠各位發揮自己的想像力,建造屬於自己的強大APP囉!


上一篇
iOS版上架流程:上架並開放下載
下一篇
結語
系列文
Flutter 30: from start to store30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言