V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jack4536251
V2EX  ›  问与答

flutter 跟原生相比有哪些劣势?

  •  
  •   jack4536251 · 263 天前 · 2534 次点击
    这是一个创建于 263 天前的主题,其中的信息可能已经有所发展或是发生改变。

    调用照相机,录音这些 flutter 是不是没原生好?

    20 条回复    2023-08-08 17:53:44 +08:00
    AoEiuV020JP
        1
    AoEiuV020JP  
       263 天前
    没试过,但理论上这些都需要原生模块原生代码来调用,结果应该是和原生直接调用一样的,
    rocmax
        2
    rocmax  
       263 天前 via Android
    原生功能还是调原生 API ,flutter 主要解决的是 UI 层面的统一问题
    x77
        3
    x77  
       263 天前 via Android
    与平台的交互部分 Flutter 也要调原生代码。
    LookUpAndSmile
        4
    LookUpAndSmile  
       263 天前
    亲身经历
    1.公司人员有限,一个萝卜一个坑,同时遇到 Web 离职了,这期迭代 IOS 要去改 Web 了,然后 Android ,你这边新功能用 Flutter 写一下,写完 IOS 直接对接进去。
    2.遇到新 App ,领导又说了,这次客户要的比较着急,来,IOS ,Android 你俩分以下,一块写,估个工期吧,最后再给你砍两天。
    3 上级领导要求要创新,要用新技术(虽然 Flutter 已经好几年了,但是领导不知道),拿这个来装逼,领导一看吆喝,眼前一亮,竟然写一遍代码 Android ,IOS 都能跑。

    已上就是我体会到的相比原生的优势
    iOCZ
        5
    iOCZ  
       263 天前   ❤️ 1
    看你的标题还是正常的,看正文就傻眼了。。。
    iOCZ
        6
    iOCZ  
       263 天前
    flutter 只是 UI 层的东西,当然为了使用原生平台的东西,还是要做 dart 和 native 之间的 bridge 。flutter 不是唯一的选择,SwiftUI 目前只能苹果系统用。JetBrains 近日宣布更新自家跨平台 UI 开发框架 Compose Multiplatform 新增支持 iOS ,现在开发者可以使用同一套代码库,一次编写即可在 Android 、iOS 、桌面和网页之间共享开发成果,获取更加便捷、高效的跨平台 UI 开发体验。
    mikeying
        7
    mikeying  
       263 天前
    Flutter 更适合于带有 UI 功能的跨平台完整 APP 解决方案,我的项目用的 SDK ,用 Rust 来开发的跨平台方案。
    minami
        8
    minami  
       263 天前
    最大的劣势是 flutter 属于 windowless 框架,想内嵌原生窗口或想用原生接口接管 flutter 控件渲染会非常麻烦,当然这个主要是针对桌面端的
    murmur
        9
    murmur  
       263 天前
    camera 这种东西 cordova 都能调,我不知道 flutter 相机如何,rn 的社区相机已经带了人脸(姿势)识别了
    bankroft
        10
    bankroft  
       263 天前 via iPhone
    @murmur flutter 的相机体验不太好,也可能我用的有问题
    didikee
        11
    didikee  
       263 天前   ❤️ 1
    flutter 是一个 ui 框架,你正文里说的功能它是没有的。不过可以看看有没有第三方插件去实现它,不是这些功能没原生好,你就说 UI 也没有原生的定制化高啊。

    都用 flutter 了,难道是为了和原生强吗,我还以为大家都是看中它的跨平台 UI 解决方案呢。
    LandCruiser
        12
    LandCruiser  
       263 天前   ❤️ 1
    技术行业也普遍存在外行领导内行的问题
    GTim
        13
    GTim  
       263 天前
    Flutter 最好用微信那个相机和相册功能,但是呢,有点卡,
    pkwenda
        14
    pkwenda  
       263 天前
    webview ,据我所知截止到现在 webView 也没有统一的解决方案,但是各个平台都有独立的方案,不好兼容。
    另外:apple 的 Core ML ,状态栏菜单,多窗口等,都不太行。
    Aoyd
        15
    Aoyd  
       263 天前
    flutter 的 bug 太多了,不管是官方框架还是第三方框架总有预料不到的 bug.
    AppJun
        16
    AppJun  
       263 天前   ❤️ 1
    现在不讨论优势,简单说跨平台最大的劣势就是几个,通用的劣势:

    1. 框架的维护风险,不要看很多人用,现在还有一堆人维护,但你去看看 Repo 的 Issue 页,你觉得很重要的 feature/bug fix ,对于 Flutter 来说只是很低优先级的 Issue 。必须承认,多数使用 Flutter 的开发者其实没有维护 Flutter 的能力和精力。而 Flutter 对于 Google 来说也不是一个盈利的项目。

    2. 性能就是要弱一些,毕竟怎么样整都是包了一层,就是有额外消耗,有些时候动画有跳帧就是有跳帧。当然也许能力高超可以抓出问题然后像项目反哺造福其他人。

    3. 三方库选择更少,而且可能因为支持的平台和三方库不一样,那就可能要选用多套方案,代码里面判断平台的代码少不了。而且对于自己封装的库的能力要求也比某个平台要更高。

    4. 各个平台的新技术使用有一个时间差。你可能还是得加入不少原生代码,这就意味着其实一个合格的 Flutter 开发最好同时至少是一个合格的 Android 开发或者是一个合格的 iOS 开发。使得招聘人员的费用和难度都在上升。那些觉得随便招两个人就能写好几端的产品,大概率产品形态其实只需要做微信小程序就足矣,这种产品从 0 开始做,只能说后期做大还是要改。

    总结一下说,跨平台做得好的公司,大概率是能够同时养活并且领导好一个多端原生团队的公司的。

    而为了减少成本选择跨平台的公司,多数在长期看都是做不好跨平台的。也许短期内能享受到跨平台红利,但是随着产品形态调整团队增大,会暴露出很多问题的,这就不仅仅是单纯的技术问题了。
    pao8pin5
        17
    pao8pin5  
       263 天前
    简单的 UI 展示没问题,但是复杂一点的交互就难做了。flutter 对触摸事件的传递不如原生灵活
    snowspace
        18
    snowspace  
       263 天前
    Flutter 更像一个 UI 框架,如果你的页面偏展示型( API 请求+数据渲染),不涉及原生,同时需要兼顾多端,Flutter 是比较好的选择。如果涉及原生比如展示电池电量、相机等等理论上不如原生。
    chisj
        19
    chisj  
       263 天前
    1. 启动速度会慢一些,因为要启动 DartVM 后加载 Flutter 页面。
    2. 复杂交互的性能不如原生。
    3. 包体大小再怎么优化都比纯原生大一些,这个一定程度会影响运营。
    4. 某些官方组件会有 bug ,总体没有原生已经迭代那么多年的老组件稳定。但是不怎么影响开发,毕竟全开源。
    5. 某些时候希望出错了直接程序 crash ,Flutter 层的异常一般是卡主 UI 或者某一块 UI 空白但是 APP 还能跑下去。
    6. 需要多线程处理的高内存占用任务有点麻烦,切换的代价也很高,不如原生。
    还有一些,但是我一下子想不起来了。

    跟 Flutter 的优势比起来,上面提到的,都不重要。
    justonelastdance
        20
    justonelastdance  
       263 天前
    @AppJun 很多公司最后都得招原生的 Android 和 IOS 开发填坑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1259 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:49 · PVG 07:49 · LAX 16:49 · JFK 19:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.