在評(píng)估新技術(shù)時(shí)谓传,我發(fā)現(xiàn)弄清楚哪些不能做比哪些能做到的更有用,即使這些限制看起來非常消極紧卒。
準(zhǔn)備迎接失望與不快吧诗祸。
我試圖回避一些人們不喜歡的觀點(diǎn)和事情(比如缺乏標(biāo)記語(yǔ)言),只討論關(guān)于 Flutter 目前無(wú)法做到的博个,以及何時(shí)有希望能做到际乘。
從 Dart 直接調(diào)用原生 API
Flutter 可以與原生平臺(tái) API 交互 漂佩,但不是直接調(diào)用罪塔。這與 Xamarin 及 NativeScript 不同征堪,這兩者都可以通過語(yǔ)言綁定关拒,使用與編寫 App 相同的語(yǔ)言來調(diào)用原生 API:
有什么影響着绊?
大多數(shù)情況下影響很小,許多原生調(diào)用可能已經(jīng)有人封裝成插件供直接使用洲脂,如果沒有插件剧包,你就必須編寫 Objective-C/Swift 或 Java/Kotlin 代碼以與原生 API 交互,使用不同的
IDE疆液,并通過平臺(tái)通道(platform channel)進(jìn)行通信堕油。
后續(xù)會(huì)改變嗎?
短期不會(huì)福也。
原生平臺(tái) View
Flutter 使用 Skia 渲染一切攀圈,但有時(shí)你需要使用原生 UI 元素,比如地圖和 WebView现喳。Flutter 確實(shí)支持內(nèi)嵌這些 View犬辰,但仍處于預(yù)覽版本而且存在相當(dāng)多的問題。
有什么影響灸促?
許多場(chǎng)景能夠工作,但也有限制荒叼。目前最大的問題是原生的 Android View 不支持文本輸入典鸡,因?yàn)闊o(wú)法顯示軟鍵盤。不過全屏的 WebView 是完全支持的嫁乘,包括 Android 上的鍵盤輸入球碉。
Flutter 倉(cāng)庫(kù)下關(guān)于 Google 地圖插件 , WebView 插件 和 platform-views 的熱門問題 (issues) 值得關(guān)注。
后續(xù)會(huì)改變嗎法精?
是的痴突,相關(guān)工作正在積極進(jìn)行辽装,應(yīng)該會(huì)在 2019 年變得更好。
代碼熱更新
代碼熱更新允許開發(fā)人員無(wú)需通過常規(guī)的應(yīng)用商店發(fā)布流程殉挽,而直接將補(bǔ)丁推送到他們的 App拓巧。這就可以在不發(fā)布新版本的情況下修改 Bug,從而實(shí)現(xiàn)像 Web 那樣持續(xù)的迭代過程傻唾。像 React Native承耿、Cordova 和 Ionic 等方案都支持,而 Flutter 不支持凛辣。
有什么影響职烧?
Flutter App 所有更新都必須經(jīng)過標(biāo)準(zhǔn)的應(yīng)用商店發(fā)布流程防泵,iOS 有時(shí)需要好幾天择克。
后續(xù)會(huì)改變嗎前普?
是的壹堰,目前正在開發(fā)贱纠,初期用于 Android,可以關(guān)注這個(gè) issue 的更新谆焊。
密碼自動(dòng)填充
正如我之前所提及的,原生文本編輯組件是 Flutter 重制復(fù)雜度最高的組件辜王,其中一個(gè)主要缺失的功能就是自動(dòng)填充密碼字段罐孝。
有什么影響莲兢?
用戶無(wú)法使用 iOS 或 Android 的內(nèi)置密碼管理器,也無(wú)法使用 1Password 等第三方管理器登錄你的應(yīng)用收班。包括 iOS 12 能夠從短信中快速插入一次性驗(yàn)證碼谒兄。
后續(xù)會(huì)改變嗎舵变?
有希望。有幾個(gè)關(guān)于它的開放特性請(qǐng)求赊豌。同時(shí)你可以在 iOS 上使用原生 Safari View Controller 顯示支持自動(dòng)填充的網(wǎng)頁(yè)绵咱,但這遠(yuǎn)不夠理想碘饼。
Lottie
Flutter 目前尚未完全支持 Airbnb 的 Lottie 框架熙兔,這是一種給 App 添加動(dòng)畫的流行方式“眨基于它設(shè)計(jì)人員可以使用 Bodymovin 插件從行業(yè)標(biāo)準(zhǔn) Adobe After Effects 工具導(dǎo)出動(dòng)畫住涉,然后直接導(dǎo)入到 iOS 和 Android App 中。
目前有一些插件可用钠绍,例如 lottie_flutter 舆声,但它們?nèi)杂幸恍﹩栴}。
有什么影響柳爽?
當(dāng)前插件可能無(wú)法完美呈現(xiàn)動(dòng)畫媳握。另一種選擇是使用 2Dimension 的 Flare,但大多數(shù)設(shè)計(jì)師都不熟悉它磷脯。
后續(xù)會(huì)改變嗎?
也許吧赵誓。Flutter 的渲染引擎 Skia 在 2018 年增加了對(duì) Bodymovin 文件的支持打毛。但 Flutter 尚未提供此功能,不過已經(jīng)有 issue 在跟蹤這個(gè)問題了俩功。
電視幻枉、手表和汽車
你不能使用 Flutter 為 tvOS、watchOS诡蜓、CarPlay 或 Android Auto 構(gòu)建應(yīng)用程序展辞。對(duì) Wear OS(之前的 Android Wear)的支持也很有限。Flutter 必須添加 Bitcode 支持才能部署到 tvOS 和 watchOS万牺。
有什么影響罗珍?
針對(duì)這些平臺(tái),你必須使用原生代碼或其它替代框架來開發(fā)脚粟。
后續(xù)會(huì)改變嗎覆旱?
可能。但可能需要一段時(shí)間核无。目前有 Issue 在跟蹤這些問題: Bitcode support , car support 和 Wear OS support 扣唱。
C/C++ 交互
許多語(yǔ)言都有外部函數(shù)接口來調(diào)用 C/C++ 庫(kù)中的函數(shù),這在 Dart 的世界里是不存在的团南。
有什么影響噪沙?
要使用非常流行的 SQLite 等庫(kù),你必須使用平臺(tái)通道(platform channel)吐根,或使用類似 sqflite 之類的插件正歼。
后續(xù)會(huì)改變嗎?
是的拷橘。目前正在積極開展這方面的工作局义,但需要對(duì) Dart 虛擬機(jī)做大量修改喜爷。
結(jié)語(yǔ)
哦,希望這不是太令人沮喪萄唇。不過別擔(dān)心檩帐,沒有什么是完美的,F(xiàn)lutter 仍然很棒另萤。
如果我遺漏了什么湃密,請(qǐng)?jiān)谠u(píng)論中告訴我。
原文: https://medium.com/flutter-community/what-flutter-cant-do-limitations-ed185c89fb61
作者:Tom Gilder
編譯:碼王爺