试了 android ios 上的 闲鱼,米游社,和我自己的软件, 感觉都有这毛病 稍微快点 页面会轻微向上跳
1
RYAN0UP 2021-03-09 10:59:26 +08:00
有的,Google 自家的 Analytics ios app 换成 Flutter 之后就明显掉帧不跟手。
|
2
debuggerx 2021-03-09 11:02:29 +08:00
看看是不是这个问题:
https://juejin.cn/post/6844904187201847310 分清楚是掉帧问题还是物理动画解算器的效果差异,就像我用惯 Android 后使用 iOS 就会觉得 iOS 的列表默认滑动效果 “太滑” |
3
meteor957 2021-03-09 11:03:37 +08:00
rn 滑动的时候就挺跟手
|
5
debuggerx 2021-03-09 11:17:07 +08:00 6
@James369 习惯问题,其实没有好坏对错。类似的问题还有 MacOS 的鼠标加速度,习惯的人觉得各种好,不习惯的人会很难受。其实大家都是符合所谓“物理运动规律”的,但问题是摩擦系数应该是多大?阻尼应该是多少?最终的感觉就有像是在冰面推石头和在水面推木头的区别,毕竟设计中的元素终归不是现实世界的实体,它们滑动起来该有“多滑”都是带有个人偏好的
|
6
nicevar 2021-03-09 11:18:28 +08:00
Flutter 目前还是差原生一大截的,咸鱼问题更多,滑动不光是抖动,画面刷新也有问题,肉眼能看出来差距,而且使用时间长眼睛都会很胀,之前的版本动不动就白屏,另外 OOM 和 ANR 也很常见。
|
7
ai277014717 2021-03-09 11:20:55 +08:00
flutter 的问题。天生的。
|
8
Bijiabo 2021-03-09 11:21:58 +08:00
作为 iOS 用户,感觉 Flutter 的 ScrollView 弹簧动画在 iOS 上的表现让人很「难受」,说不出来哪里出问题,就是觉得不舒服。
|
9
nobodyknows 2021-03-09 11:27:05 +08:00
@Bijiabo 印象中 iOS ScrollView 回弹效果是有专利的
|
10
VinsonGuo 2021-03-09 11:27:22 +08:00
一加上的 flutter 都是 60hz,不支持高刷,这种割裂感让人很难受
|
11
silencelixing 2021-03-09 11:28:11 +08:00 1
所以我一直不理解那些 flutter 吹是怎么想的:
|
13
lagoon 2021-03-09 11:35:15 +08:00 1
前几天,还看到一个说淘宝 app 卡的贴。。。
估计也是 Flutter 的锅。 Flutter 就像小电驴,总有一些人,跳出来表示:小电驴上不了高速、小电驴还要风吹雨打,小电驴太垃圾,不明白有些人为什么要用小电驴。 我的理解是,能解决某些方面的痛点的,就是好的。 |
14
Lin0936 2021-03-09 11:36:54 +08:00
在 iOS 上用的软件现在就一个钱迹用的 flutter,确实这么简洁的 app 也不够顺滑,偶尔不跟手。
|
15
icyalala 2021-03-09 11:42:07 +08:00
@debuggerx 不是习不习惯的问题。
你的 App 表现得和平台其他 App 相同,用户才能不会感到困惑。 比如我 Windows 和 macOS 都用得惯,但是在 Windows 里我知道关闭按钮在右上方,macOS 在左上方。 如果你在 macOS 上弄个右上角关闭的窗口,那肯定不符合用户预期。 滑动的感觉也是如此。 |
16
qianji201712 2021-03-09 11:52:11 +08:00 8
@Lin0936 被翻牌子了 = =,不过我解释一下啊,钱迹 ios 端不流畅,有一部分原因怪我,因为当初第一版边学边写,还不会局部刷新,导致一些页面刷新依然是整个刷新(目前还在逐步重构中),不过,的的确确,flutter 在 ios 上会偶尔掉帧,反倒没有在 Android 上面流畅,flutter 目前非常考验开发者的写法,不小心就卡了,而像 Android,iOS 原生,只要你代码不是特别恶心,基本上不会卡。
其实有个真实的情况就是,很多人的卡顿,还是写法造成的,但是真正优化过的代码,我是极少见到有卡顿的,而就我个人而言,以后 App 都会用 Flutter 来写,跨平台,省了太多开发精力了。 目前微信,京东,Google 都在使用 flutter 了,而且它的受欢迎程度越来越高,那自然是有原因的。 说咸鱼的,咸鱼 App 本身就很烂啊,没有 flutter 也烂,庞大复杂的功能糅合在里面,已经臃肿不堪了。 |
17
qianji201712 2021-03-09 11:54:39 +08:00 2
刷新帧率问题,记得加 GestureBinding.instance.resamplingEnabled = true;
|
18
adjusted 2021-03-09 11:54:59 +08:00
感觉 flutter 的这个问题确实无解, 一个 app 部分页面使用 flutter 都会带来不协调,react native 能更好的嵌入到已有的原生应用中
|
19
qianji201712 2021-03-09 11:56:42 +08:00
@adjusted 的确,如果现有 App 整合 flutter 进来,卡顿反倒更多,不如纯 flutter 项目
|
20
debuggerx 2021-03-09 11:58:33 +08:00 1
@icyalala 我是以我的经验和理解给出解释,有能力的人应该可以顺着这个思路和方向找到解决方案或者自己动手修改,而不是上来就说 flutter 不行、掉帧、不跟手,不要用……
至于你说的,这不是习不习惯的问题,但其实你下面举例的所谓“用户预期”,还是平台固有表现给老用户带来的习惯问题。。私以为,有追求的产品确实应该给各个平台的用户提供最接近习惯的体验,但是这个和大部分使用 Flutter 方案团队的初衷有冲突了。Flutter 最主要还是为了解决跨平台代码共享和表现一致性问题,深层次的这种体验细节,我相信通过自定义物理解算器是可以实现的,但是需要大量的投入,可能对大部分公司都有点不太现实吧……所以总的来说,我也承认这算是 flutter 目前存在的问题吧,但是很多人不知道问题出在哪里,而是不负责任的主观臆测,说是性能问题,我就挺无语的 |
22
debuggerx 2021-03-09 12:04:16 +08:00
@qianji201712 #17 干货 [赞]
|
23
wvitas 2021-03-09 12:08:02 +08:00
我也早发现 Flutter 的列表滑动跟原生有差别,其实这些差别都是对比才能看出来的。据反馈 Flutter 2.0 可能会好点
|
24
CommandZi 2021-03-09 12:10:31 +08:00
iOS 上的 flutter 软件总能给我一种正在使用 Android App 的感觉。咸鱼更是其中代表,列表滑动最渣,总是给我一种脱离控制的感觉,滑动起来很累。
|
26
loginbygoogle 2021-03-09 12:22:52 +08:00
如果 listview 使用了大量图片是有这个问题
|
27
icyalala 2021-03-09 12:28:51 +08:00 via iPhone
@debuggerx 习惯和预期指的不是一个东西。
这是 Flutter 应该解决的,而不是让开发者去修改、去打补丁啊… |
28
loginbygoogle 2021-03-09 12:32:16 +08:00
只能说代码优化不到位,并不妨碍 Flutter 统一应用层开发
|
29
cairnechen 2021-03-09 12:42:35 +08:00
@James369 说实话有点中二,看着好尬
|
30
nannanziyu 2021-03-09 12:50:50 +08:00
|
31
dingdangnao 2021-03-09 12:52:29 +08:00
网上找了几个 demo 跑起来卡卡的
|
32
Annoke 2021-03-09 13:00:09 +08:00 via Android
我觉得 flutter 就是个 kpi…
|
33
Bijiabo 2021-03-09 13:10:08 +08:00
@nobodyknows 嗯,是的,只是不清楚 Flutter 能不能模仿一下弹窗曲线的参数,效果都做的差不多了嘛
|
34
wanguorui123 2021-03-09 13:11:21 +08:00 via iPhone
苹果原生的组件渲染引擎应该和屏幕驱动有特殊优化加成,可能 flutter 缺没享受到
|
35
James369 2021-03-09 13:42:32 +08:00
@nannanziyu 这种情况我以前也遇到过,不过后来没感觉了,可能用久了产生了抗体
|
37
AlexV525 2021-03-09 14:18:36 +08:00
|
38
leon0918 2021-03-09 15:49:22 +08:00
触控是有点的问题,你尝试下列表上用四根手指同时上下滑动,更不跟手,原生就没这个问题
|
39
YuTengjing 2021-03-09 16:20:56 +08:00
咸鱼的混合应用方案不是换成 wevView 了吗?确定是 flutter 的锅?
|
41
CommandZi 2021-03-09 17:01:14 +08:00
@YuTengjing 没有吧,就我的感觉 iOS 咸鱼 6.9.11 版本,首页的列表和搜索页面的列表明显是两种技术
首页的列表和消息列表应该是原生的。搜索页面的列表和详情页面明显是 Flutter |
42
zzw1998 2021-03-09 17:12:45 +08:00
有人试用 Flutter 2.0 了吗,各种问题有解决吗
|
43
lwlizhe 2021-03-09 17:42:07 +08:00
我感觉,造成这种现象的最主要原因还是 “会” 写 flutter 的人真的不多…………
另外 flutter 确实某些 api 真 tmd 是性能杀手,用了就卡的要死; 比如说 layout 方法这种必须在 UI Isolate 调用的 ,然鹅那玩意是个 cpu 密集型任务……做个分页 cpu 暴涨导致应用卡顿~~ 先不提它这玩意性能为啥跟原生差这么多还 tm 只能在 UI 线程用,有什么好的解决方案么? |
44
ybz 2021-03-09 17:44:10 +08:00
已升级到 flutter 2.0,除了几个第三方库有几个语法错误,修改成本地依赖解决,并未发现其他问题。
|
45
vate32 2021-03-09 18:13:16 +08:00
用过一个 Android RSS app,fluent reader lite[https://github.com/yang991178/fluent-reader-lite]就感觉列表很不跟手
|
46
debuggerx 2021-03-09 18:52:52 +08:00
|
47
debuggerx 2021-03-09 19:00:34 +08:00
@lwlizhe 我写阅读器的时候也碰到这个问题了,没办法,最后是绞尽脑汁,不分页,用百分比做文章进度转跳,然后每次只绘制当前页和前后页,只 layout 三个页面的文字量,总计算耗时大约十几毫秒,勉强能够接受吧:
http://www.debuggerx.com/2020/12/29/these-years-about-flutter-and-me/?from=v2ex#5 月 |
48
debuggerx 2021-03-09 19:01:37 +08:00
|
49
minami 2021-03-09 19:01:55 +08:00
只能说跟手和流畅是两个概念,流畅只需要做到画面刷新帧数高,跟手就需要各方面特别是触控和动画的打磨了。然而跨平台框架基本上是打磨不到原生的水平的,一来是隔了封装,二来是投入的精力不足
|
50
Building 2021-03-09 19:03:00 +08:00 via iPhone
@lwlizhe 跟手和性能没有什么绝对关系,跟手是手触碰到和滑动屏幕后映射到屏幕上点的变化,和框架调参数有很大关系,iOS 就算卡到 30Hz,也是跟手的,因为像素变化符合人的预期,Flutter 好像是谷歌自己插手图像渲染的吧,很可能没用到 UIKit,连 Android 都处理不好,更别说 Flutter 了。
|
51
minami 2021-03-09 19:03:09 +08:00
而且 flutter 还是自绘的,和原生控件完全不一样,只是看起来像而已
|
52
lwlizhe 2021-03-09 19:20:51 +08:00
@debuggerx 我是新开了一个 flutter enginer,然后弄了个 plugin,让原生层当个桥梁,让这个新开的 flutterView (或者是 flutter enginer )当作 UI 线程去搞,勉强能解决;
现在对比下 android,这 flutter 文字绘制这块 真是一言难尽~~ 不过确实搞出来效果的时候蛮有成就感的~~ 另外代码膨胀这个点个赞,太赞同了;组件这块也是,我感觉很多功能都能通过配置方式来合并,而非重新开一个新的组件; |
53
lwlizhe 2021-03-09 19:24:20 +08:00
|
54
lizhenda 2021-03-09 19:24:25 +08:00 1
其实对比下游戏里面的列表就明白了,做游戏列表优化是万年难题,就是做不到原生的体验,flutter 也是自己控制 GL 绘制的和游戏引擎一样,能有现在的效果已经很强大了
|
56
LiuJQ 2021-03-09 20:37:27 +08:00
flutter 设计初衷就是为了纯 flutter application,只不过现阶段大多应用于 AddToApp 的 hybrid 开发模式,多 flutterview 导致内存倍数增长,所以体验不是太好。
写过纯 flutter app 的开发者应该都知道,仅一个 flutter engine 实例,体验是不输原生的。 |
57
tpphha 2021-03-09 21:56:09 +08:00
我更推崇 RN 的理念,Learn once, write anywhere.
除非公司实在没人,或者早期试错,不然完全不推荐用 flutter 。 闲鱼这么大体量,又不缺资源,用 flutter 就是自己作死,没事找事。本来可以 60 分的体验,自己硬是要弄成负分。 |
58
tpphha 2021-03-09 22:00:41 +08:00 1
一个事实,原生的体验是强于 flutter 的。如果有比这种体验更重要的事情,这时候才放弃原生去使用 flutter 。
但如果是一个成熟应用,我实在想不出任何理由不用原生,而去折腾 flutter,来折磨用户。 |
59
jones2000 2021-03-09 23:57:35 +08:00 1
flutter 能解决就业呀,1-2 个月就能上手, 直接就可以招应届的开工, 原生的开发没大半年能上手吗? Objective-C,java 半年能上手也不错了。大厂招这么多应届的,不用这些用什么呀, 不然只能天天摸鱼了。
|
60
jxdwinter 2021-03-10 08:51:22 +08:00
很疑惑一个问题,比如要用一些第三方的类库,是不是要等 flutter 版本的呢?比如高德,还是说 iOS 和 Android 可以分别引入第三方类库呢?
|
61
fx777 2021-03-10 09:17:49 +08:00
+1 原来不止我一个人这样的感受
闲鱼 iOS 用的很难受 那个滑动每次要自己回弹一点点,烦死了,跟其他 App 都不一样的体验 |
62
lwlizhe 2021-03-10 09:44:29 +08:00
@jxdwinter 这个可以啊,说白了就是 flutter 中显示原生 View,或者原生 View 中显示 flutter 嘛;
你这么搜,方案一大把 |
63
xieren58 2021-03-10 10:03:33 +08:00
快速出东西, 做起来才是王道呀, 卡一点根本不是什么问题.
|
64
so898 2021-03-10 10:24:20 +08:00
我记得曾经 Flutter 官方搞了一个库,里面就是演示滑动在不同平台上的差异
iOS 上面我记得是底层一个 UITableView,然后把 Flutter 的列表半透明罩在上面 实际跑起来滑动差异确实非常大 |
65
YvanGu 2021-03-10 10:33:41 +08:00
我对手机端的 flutter 一直挺满意的(但是今天才知道咸鱼也是 flutter 做的。。。),但是对电脑端的 electron 深恶痛绝。。
|
66
276562578 2021-03-10 17:29:06 +08:00 via Android
我当时是华为手机会卡顿,小米的不会
|
67
exploreexe 2021-03-16 00:43:23 +08:00
闲鱼天天吹 flutter,而事实是,因为闲鱼做的太辣鸡,导致很多开发者也反感 flutter 。
其实如果是做技术,flutter 确实是非常好的移动端跨平台方案,谷歌还是挺良心的,文档各种周边做的还是挺用心的,如果是追求开发效率的开发者可以尝试一下。 如果是 Java 程序员,dart 的学习曲线很平滑。 |
68
Adalwin 2021-03-19 13:28:55 +08:00
@loginbygoogle 那有什么解决方法吗? ListView 是避免不了要用大量图片的咯
|
69
loginbygoogle 2021-03-19 22:04:09 +08:00
|