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

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

  •  
  •   jack4536251 · 2023-08-08 10:10:11 +08:00 · 2940 次点击
    这是一个创建于 510 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

    跟 Flutter 的优势比起来,上面提到的,都不重要。
    justonelastdance
        20
    justonelastdance  
       2023-08-08 17:53:44 +08:00
    @AppJun 很多公司最后都得招原生的 Android 和 IOS 开发填坑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1185 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:20 · PVG 07:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.