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

2023-08-08 10:10:11 +08:00
 jack4536251

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

2784 次点击
所在节点    问与答
20 条回复
AoEiuV020JP
2023-08-08 10:37:05 +08:00
没试过,但理论上这些都需要原生模块原生代码来调用,结果应该是和原生直接调用一样的,
rocmax
2023-08-08 10:42:31 +08:00
原生功能还是调原生 API ,flutter 主要解决的是 UI 层面的统一问题
x77
2023-08-08 10:47:14 +08:00
与平台的交互部分 Flutter 也要调原生代码。
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
2023-08-08 11:59:54 +08:00
看你的标题还是正常的,看正文就傻眼了。。。
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
2023-08-08 12:05:47 +08:00
Flutter 更适合于带有 UI 功能的跨平台完整 APP 解决方案,我的项目用的 SDK ,用 Rust 来开发的跨平台方案。
minami
2023-08-08 12:39:36 +08:00
最大的劣势是 flutter 属于 windowless 框架,想内嵌原生窗口或想用原生接口接管 flutter 控件渲染会非常麻烦,当然这个主要是针对桌面端的
murmur
2023-08-08 12:43:54 +08:00
camera 这种东西 cordova 都能调,我不知道 flutter 相机如何,rn 的社区相机已经带了人脸(姿势)识别了
bankroft
2023-08-08 12:45:45 +08:00
@murmur flutter 的相机体验不太好,也可能我用的有问题
didikee
2023-08-08 13:12:21 +08:00
flutter 是一个 ui 框架,你正文里说的功能它是没有的。不过可以看看有没有第三方插件去实现它,不是这些功能没原生好,你就说 UI 也没有原生的定制化高啊。

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

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

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

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

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

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

而为了减少成本选择跨平台的公司,多数在长期看都是做不好跨平台的。也许短期内能享受到跨平台红利,但是随着产品形态调整团队增大,会暴露出很多问题的,这就不仅仅是单纯的技术问题了。
pao8pin5
2023-08-08 14:24:57 +08:00
简单的 UI 展示没问题,但是复杂一点的交互就难做了。flutter 对触摸事件的传递不如原生灵活
snowspace
2023-08-08 16:45:55 +08:00
Flutter 更像一个 UI 框架,如果你的页面偏展示型( API 请求+数据渲染),不涉及原生,同时需要兼顾多端,Flutter 是比较好的选择。如果涉及原生比如展示电池电量、相机等等理论上不如原生。
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
2023-08-08 17:53:44 +08:00
@AppJun 很多公司最后都得招原生的 Android 和 IOS 开发填坑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/963280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX