Aireport(iOS原生)swift
Aireport Flutter(Flutter版)markdown
Aireport本來是我本身在用, 可是在初步學習了Flutter後我決定用Flutter最大限度的去模仿iOS原生版的應用, 以評估Flutter是否有能力作到以假亂真的地步. 咱們在上一篇文章中已經探討了Flutter在開發中可能遇到的問題, 這篇文章咱們將着重放在二者用戶在實際體驗中的差距.app
安裝包大小決定了用戶等待下載的時間和可能會耗費的流量, 即使是即將邁入5G時代的今天, 咱們依然須要儘可能優化應用安裝的大小.框架
Flutter應用安裝包和安裝後容量 oop
上面的應用容量除了影響磁盤佔用外, 對啓動速度也會有影響. 我在iPhone X上實測了一下, iOS原生應用的冷啓動速度大概是在0.4秒左右, 而Flutter的冷啓動速度在1.5秒左右. post
內存佔用一直是移動開發中的一個優化重點.不過目前來看Release版的Flutter在內存佔用這一塊也沒有任何優點, SDK拖累是一方面, 單個頁面內存佔用也比原生多一倍. 性能
內存佔用不只影響着應用性能、電池損耗、 程序穩定性, 最重要可是, 內存佔用越大, 被系統幹掉後臺的可能性就越大. 我本身的使用體驗來看, iOS原生的Aireport基本上大部分時間都處於休眠狀態, 而Flutter會在關閉不久後直接被系統幹掉.學習
從框架一出現,60FPS彷佛始終貫穿於各大Flutter的介紹和分析文章中, 這讓咱們對Flutter的流暢度很是期待.然而:優化
這種幀率的差距也體如今了實際使用中. 不管是頁面的切換, 仍是ListView的滾動, Flutter都僅僅能達到還算流暢的程度, 但明顯還達不到iOS原生60幀的絲般順滑. 固然, 目前的Flutter還處在Beta版, 並且我我的認爲, 相對於安裝包大小和啓動速度, 運行時的流暢度更容易進行優化. 我相信Flutter將在以後的版本中進一步優化應用的流暢度, 達到與原生媲美的程度.ui
iOS應用開發受益於強大的iOS系統和豐富的生態體系, 天生就具備大量實用且不可替代的特性, 例如Bitcode可以在雲端自動優化咱們App的代碼, 原生應用默認就支持增量更新、後臺應用刷新等等.
綜合了目前Flutter在開發中的體驗以及和原生應用的比較, 我目前對Flutter的評估結果是: 再等等.
Flutter的確提供了一種不一樣於目前其餘跨平臺開發框架的思路, 也極有可能成爲將來跨平臺開發的標杆. 若是你是我的開發, 我仍是建議你學習一下Flutter, 它的Dart語言、Wiget化、數據綁定、單向數據流等等現代特性值得你去了解. 同時對於沒法同時掌握多個移動開發平臺的小夥伴而言, 使用Flutter也是一種成本較爲低廉的方法. 可是對於公司而言, Flutter還沒法徹底投入生產環境, 並且初期Flutter的開發成本未必會低於原平生臺.
目前Fuchsia的開發進度還不得而知, Flutter也還處在Beta3階段. 相信等Fuchsia正式發佈的時候纔是檢驗Flutter正在實力的時候.