flutter 滑动不跟手有人发现吗

发布于 1周前 作者 vueper 来自 Flutter

试了 android ios 上的 闲鱼,米游社,和我自己的软件, 感觉都有这毛病 稍微快点 页面会轻微向上跳


flutter 滑动不跟手有人发现吗
70 回复

有的,Google 自家的 Analytics ios app 换成 Flutter 之后就明显掉帧不跟手。

更多关于flutter 滑动不跟手有人发现吗的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


看看是不是这个问题:
https://juejin.cn/post/6844904187201847310

分清楚是掉帧问题还是物理动画解算器的效果差异,就像我用惯 Android 后使用 iOS 就会觉得 iOS 的列表默认滑动效果 “太滑”

rn 滑动的时候就挺跟手

iOS 的滑动很顺,符合物理运动规律,符合心理预期。到边界还有弹簧缓冲的效果,真是非常棒的设计。

习惯问题,其实没有好坏对错。类似的问题还有 MacOS 的鼠标加速度,习惯的人觉得各种好,不习惯的人会很难受。其实大家都是符合所谓“物理运动规律”的,但问题是摩擦系数应该是多大?阻尼应该是多少?最终的感觉就有像是在冰面推石头和在水面推木头的区别,毕竟设计中的元素终归不是现实世界的实体,它们滑动起来该有“多滑”都是带有个人偏好的

Flutter 目前还是差原生一大截的,咸鱼问题更多,滑动不光是抖动,画面刷新也有问题,肉眼能看出来差距,而且使用时间长眼睛都会很胀,之前的版本动不动就白屏,另外 OOM 和 ANR 也很常见。

flutter 的问题。天生的。

作为 iOS 用户,感觉 Flutter 的 ScrollView 弹簧动画在 iOS 上的表现让人很「难受」,说不出来哪里出问题,就是觉得不舒服。

印象中 iOS ScrollView 回弹效果是有专利的

一加上的 flutter 都是 60hz,不支持高刷,这种割裂感让人很难受

所以我一直不理解那些 flutter 吹是怎么想的:

有道理,不过我还是欣赏苹果系的软硬件系统。把系统当作艺术品来做,姑且称之为 艺术驱动的系统开发。

前几天,还看到一个说淘宝 app 卡的贴。。。
估计也是 Flutter 的锅。



Flutter 就像小电驴,总有一些人,跳出来表示:小电驴上不了高速、小电驴还要风吹雨打,小电驴太垃圾,不明白有些人为什么要用小电驴。


我的理解是,能解决某些方面的痛点的,就是好的。

在 iOS 上用的软件现在就一个钱迹用的 flutter,确实这么简洁的 app 也不够顺滑,偶尔不跟手。

不是习不习惯的问题。
你的 App 表现得和平台其他 App 相同,用户才能不会感到困惑。
比如我 Windows 和 macOS 都用得惯,但是在 Windows 里我知道关闭按钮在右上方,macOS 在左上方。
如果你在 macOS 上弄个右上角关闭的窗口,那肯定不符合用户预期。

滑动的感觉也是如此。

被翻牌子了 = =,不过我解释一下啊,钱迹 ios 端不流畅,有一部分原因怪我,因为当初第一版边学边写,还不会局部刷新,导致一些页面刷新依然是整个刷新(目前还在逐步重构中),不过,的的确确,flutter 在 ios 上会偶尔掉帧,反倒没有在 Android 上面流畅,flutter 目前非常考验开发者的写法,不小心就卡了,而像 Android,iOS 原生,只要你代码不是特别恶心,基本上不会卡。

其实有个真实的情况就是,很多人的卡顿,还是写法造成的,但是真正优化过的代码,我是极少见到有卡顿的,而就我个人而言,以后 App 都会用 Flutter 来写,跨平台,省了太多开发精力了。

目前微信,京东,Google 都在使用 flutter 了,而且它的受欢迎程度越来越高,那自然是有原因的。

说咸鱼的,咸鱼 App 本身就很烂啊,没有 flutter 也烂,庞大复杂的功能糅合在里面,已经臃肿不堪了。

刷新帧率问题,记得加 GestureBinding.instance.resamplingEnabled = true;

感觉 flutter 的这个问题确实无解, 一个 app 部分页面使用 flutter 都会带来不协调,react native 能更好的嵌入到已有的原生应用中

的确,如果现有 App 整合 flutter 进来,卡顿反倒更多,不如纯 flutter 项目

我是以我的经验和理解给出解释,有能力的人应该可以顺着这个思路和方向找到解决方案或者自己动手修改,而不是上来就说 flutter 不行、掉帧、不跟手,不要用……

至于你说的,这不是习不习惯的问题,但其实你下面举例的所谓“用户预期”,还是平台固有表现给老用户带来的习惯问题。。私以为,有追求的产品确实应该给各个平台的用户提供最接近习惯的体验,但是这个和大部分使用 Flutter 方案团队的初衷有冲突了。Flutter 最主要还是为了解决跨平台代码共享和表现一致性问题,深层次的这种体验细节,我相信通过自定义物理解算器是可以实现的,但是需要大量的投入,可能对大部分公司都有点不太现实吧……所以总的来说,我也承认这算是 flutter 目前存在的问题吧,但是很多人不知道问题出在哪里,而是不负责任的主观臆测,说是性能问题,我就挺无语的

iOS 的摩擦系数、阻尼是当初乔布斯亲自调教的,相比 Android 我 buy 乔布斯的

#17 干货 [赞]

我也早发现 Flutter 的列表滑动跟原生有差别,其实这些差别都是对比才能看出来的。据反馈 Flutter 2.0 可能会好点

iOS 上的 flutter 软件总能给我一种正在使用 Android App 的感觉。咸鱼更是其中代表,列表滑动最渣,总是给我一种脱离控制的感觉,滑动起来很累。

#3 因为 rn 的组件就是调用系统内置组件,所以效果和系统默认的一样呗 :)

如果 listview 使用了大量图片是有这个问题

习惯和预期指的不是一个东西。
这是 Flutter 应该解决的,而不是让开发者去修改、去打补丁啊…

只能说代码优化不到位,并不妨碍 Flutter 统一应用层开发

说实话有点中二,看着好尬

网上找了几个 demo 跑起来卡卡的

我觉得 flutter 就是个 kpi…

嗯,是的,只是不清楚 Flutter 能不能模仿一下弹窗曲线的参数,效果都做的差不多了嘛

苹果原生的组件渲染引擎应该和屏幕驱动有特殊优化加成,可能 flutter 缺没享受到

这种情况我以前也遇到过,不过后来没感觉了,可能用久了产生了抗体

我是安卓用户,也感觉咸鱼滑动很别扭,不是安卓原生滑动感觉

触控是有点的问题,你尝试下列表上用四根手指同时上下滑动,更不跟手,原生就没这个问题

咸鱼的混合应用方案不是换成 wevView 了吗?确定是 flutter 的锅?

是的,咸鱼的滑动感觉像是对 iOS 劣质的仿造(不过我感觉是 Flutter 的锅)

没有吧,就我的感觉 iOS 咸鱼 6.9.11 版本,首页的列表和搜索页面的列表明显是两种技术
首页的列表和消息列表应该是原生的。搜索页面的列表和详情页面明显是 Flutter

有人试用 Flutter 2.0 了吗,各种问题有解决吗

我感觉,造成这种现象的最主要原因还是 “会” 写 flutter 的人真的不多…………
另外 flutter 确实某些 api 真 tmd 是性能杀手,用了就卡的要死;
比如说 layout 方法这种必须在 UI Isolate 调用的 ,然鹅那玩意是个 cpu 密集型任务……做个分页 cpu 暴涨导致应用卡顿~~

先不提它这玩意性能为啥跟原生差这么多还 tm 只能在 UI 线程用,有什么好的解决方案么?

已升级到 flutter 2.0,除了几个第三方库有几个语法错误,修改成本地依赖解决,并未发现其他问题。

用过一个 Android RSS app,fluent reader lite[https://github.com/yang991178/fluent-reader-lite]就感觉列表很不跟手

我写阅读器的时候也碰到这个问题了,没办法,最后是绞尽脑汁,不分页,用百分比做文章进度转跳,然后每次只绘制当前页和前后页,只 layout 三个页面的文字量,总计算耗时大约十几毫秒,勉强能够接受吧:

http://www.debuggerx.com/2020/12/29/these-years-about-flutter-and-me/?from=v2ex#5

只能说跟手和流畅是两个概念,流畅只需要做到画面刷新帧数高,跟手就需要各方面特别是触控和动画的打磨了。然而跨平台框架基本上是打磨不到原生的水平的,一来是隔了封装,二来是投入的精力不足

跟手和性能没有什么绝对关系,跟手是手触碰到和滑动屏幕后映射到屏幕上点的变化,和框架调参数有很大关系,iOS 就算卡到 30Hz,也是跟手的,因为像素变化符合人的预期,Flutter 好像是谷歌自己插手图像渲染的吧,很可能没用到 UIKit,连 Android 都处理不好,更别说 Flutter 了。

而且 flutter 还是自绘的,和原生控件完全不一样,只是看起来像而已

我是新开了一个 flutter enginer,然后弄了个 plugin,让原生层当个桥梁,让这个新开的 flutterView (或者是 flutter enginer )当作 UI 线程去搞,勉强能解决;

现在对比下 android,这 flutter 文字绘制这块 真是一言难尽~~

不过确实搞出来效果的时候蛮有成就感的~~

另外代码膨胀这个点个赞,太赞同了;组件这块也是,我感觉很多功能都能通过配置方式来合并,而非重新开一个新的组件;

这样啊,不过其实我只是看到 flutter,有些东西不吐不快;

总结的话,精简一下:
未来可期,但是现在拉跨;离成熟稳定还是差距不小,需要更多大佬参与建设;

其实对比下游戏里面的列表就明白了,做游戏列表优化是万年难题,就是做不到原生的体验,flutter 也是自己控制 GL 绘制的和游戏引擎一样,能有现在的效果已经很强大了

对这很明显不是性能导致的 而是触摸响应导致的

flutter 设计初衷就是为了纯 flutter application,只不过现阶段大多应用于 AddToApp 的 hybrid 开发模式,多 flutterview 导致内存倍数增长,所以体验不是太好。

写过纯 flutter app 的开发者应该都知道,仅一个 flutter engine 实例,体验是不输原生的。

我更推崇 RN 的理念,Learn once, write anywhere.

除非公司实在没人,或者早期试错,不然完全不推荐用 flutter 。

闲鱼这么大体量,又不缺资源,用 flutter 就是自己作死,没事找事。本来可以 60 分的体验,自己硬是要弄成负分。

一个事实,原生的体验是强于 flutter 的。如果有比这种体验更重要的事情,这时候才放弃原生去使用 flutter 。

但如果是一个成熟应用,我实在想不出任何理由不用原生,而去折腾 flutter,来折磨用户。

flutter 能解决就业呀,1-2 个月就能上手, 直接就可以招应届的开工, 原生的开发没大半年能上手吗? Objective-C,java 半年能上手也不错了。大厂招这么多应届的,不用这些用什么呀, 不然只能天天摸鱼了。

很疑惑一个问题,比如要用一些第三方的类库,是不是要等 flutter 版本的呢?比如高德,还是说 iOS 和 Android 可以分别引入第三方类库呢?

+1 原来不止我一个人这样的感受
闲鱼 iOS 用的很难受 那个滑动每次要自己回弹一点点,烦死了,跟其他 App 都不一样的体验

这个可以啊,说白了就是 flutter 中显示原生 View,或者原生 View 中显示 flutter 嘛;
你这么搜,方案一大把

快速出东西, 做起来才是王道呀, 卡一点根本不是什么问题.

我记得曾经 Flutter 官方搞了一个库,里面就是演示滑动在不同平台上的差异
iOS 上面我记得是底层一个 UITableView,然后把 Flutter 的列表半透明罩在上面
实际跑起来滑动差异确实非常大

我对手机端的 flutter 一直挺满意的(但是今天才知道咸鱼也是 flutter 做的。。。),但是对电脑端的 electron 深恶痛绝。。

我当时是华为手机会卡顿,小米的不会

闲鱼天天吹 flutter,而事实是,因为闲鱼做的太辣鸡,导致很多开发者也反感 flutter 。
其实如果是做技术,flutter 确实是非常好的移动端跨平台方案,谷歌还是挺良心的,文档各种周边做的还是挺用心的,如果是追求开发效率的开发者可以尝试一下。
如果是 Java 程序员,dart 的学习曲线很平滑。

那有什么解决方法吗? ListView 是避免不了要用大量图片的咯

关于Flutter滑动不跟手的问题,确实有一些开发者遇到过类似的情况。这可能是由于Flutter的滑动算法或手势识别机制在某些特定场景下表现不够理想所致。以下是一些可能的解决方案和建议:

  1. 更换插件:如果你在使用Flutter的WebView组件时遇到滑动不跟手的问题,可以尝试更换为flutter_inappwebview插件。这个插件在滑动性能上可能更为优化。
  2. 自定义手势识别:在Flutter中,你可以通过自定义手势识别器来解决滑动冲突或提升滑动性能。例如,你可以为WebView组件添加特定的手势识别器,以确保其能够正确响应垂直滑动手势。
  3. 优化滑动算法:虽然Flutter的滑动算法在大多数情况下表现良好,但在某些复杂场景下可能需要进一步优化。你可以尝试调整滑动相关的参数或算法,以提升滑动体验。
  4. 查阅文档和社区:Flutter的官方文档和开发者社区是获取帮助和解决方案的重要资源。你可以查阅相关文档,了解滑动和手势识别的最佳实践,或者在社区中搜索类似问题的解决方案。

综上所述,Flutter滑动不跟手的问题可能由多种原因引起,但通常可以通过更换插件、自定义手势识别、优化滑动算法或查阅文档和社区等方式来解决。

回到顶部