
Aireport原本是我自己在用, 但是在初步學習了Flutter後我決定用Flutter最大限度的去模仿iOS原生版的應用, 以評估Flutter是否有能力做到以假亂真的地步. 我們在上一篇文章中已經探討了Flutter在開發中可能遇到的問題, 這篇文章我們將著重放在兩者使用者在實際體驗中的差距.
1.安裝包大小
安裝包大小決定了使用者等待下載的時間和可能會耗費的流量, 即便是即將邁入5G時代的今天, 我們依然需要儘量優化應用安裝的大小.
Flutter應用安裝包和安裝後容量



2.啟動速度
上面的應用容量除了影響磁碟佔用外, 對啟動速度也會有影響. 我在iPhone X上實測了一下, iOS原生應用的冷啟動速度大概是在0.4秒左右, 而Flutter的冷啟動速度在1.5秒左右.

3.記憶體佔用
記憶體佔用一直是移動開發中的一個優化重點.不過目前來看Release版的Flutter在記憶體佔用這一塊也沒有任何優勢, SDK拖累是一方面, 單個頁面記憶體佔用也比原生多一倍.

記憶體佔用不僅影響著應用效能、電池損耗、 程式穩定性, 最重要但是, 記憶體佔用越大, 被系統幹掉後臺的可能性就越大. 我自己的使用體驗來看, iOS原生的Aireport基本上大部分時間都處於休眠狀態, 而Flutter會在關閉不久後直接被系統幹掉.
4.流暢度
從框架一出現,60FPS似乎始終貫穿於各大Flutter的介紹和分析文章中, 這讓我們對Flutter的流暢度非常期待.然而:


這種幀率的差距也體現在了實際使用中. 無論是頁面的切換, 還是ListView的滾動, Flutter都僅僅能達到還算流暢的程度, 但明顯還達不到iOS原生60幀的絲般順滑. 當然, 目前的Flutter還處在Beta版, 而且我個人認為, 相對於安裝包大小和啟動速度, 執行時的流暢度更容易進行優化. 我相信Flutter將在之後的版本中進一步優化應用的流暢度, 達到與原生媲美的程度.
5.iOS特性支援
iOS應用開發受益於強大的iOS系統和豐富的生態體系, 天生就具有大量實用且不可替代的特性, 例如Bitcode能夠在雲端自動優化我們App的程式碼, 原生應用預設就支援增量更新、後臺應用重新整理等等.

綜合了目前Flutter在開發中的體驗以及和原生應用的比較, 我目前對Flutter的評估結果是: 再等等.
Flutter的確提供了一種不同於目前其他跨平臺開發框架的思路, 也極有可能成為未來跨平臺開發的標杆. 如果你是個人開發, 我還是建議你學習一下Flutter, 它的Dart語言、Wiget化、資料繫結、單向資料流等等現代特性值得你去了解. 同時對於無法同時掌握多個移動開發平臺的小夥伴而言, 使用Flutter也是一種成本較為低廉的方法. 但是對於公司而言, Flutter還無法完全投入生產環境, 而且初期Flutter的開發成本未必會低於原生平臺.
目前Fuchsia的開發進度還不得而知, Flutter也還處在Beta3階段. 相信等Fuchsia正式釋出的時候才是檢驗Flutter正在實力的時候.