Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

trailingLayoutOffset或者layoutOffset计算会有精度问题 #44

Closed
yx-mike opened this issue Jan 23, 2025 · 4 comments
Closed

trailingLayoutOffset或者layoutOffset计算会有精度问题 #44

yx-mike opened this issue Jan 23, 2025 · 4 comments

Comments

@yx-mike
Copy link

yx-mike commented Jan 23, 2025

Version

master

Platforms

dart, iOS

Device Model

iPhone

flutter info

flutter 3.7.12

How to reproduce?

设置两列的瀑布流,在最前面设置两个高度一样的卡片,后面卡片随机高度。往下加载很多也页后,再重新往上划动回去。在最上面的两个卡片出来前,后面3、4号位计算位置的时候,layoutOffset有精度问题,导致判断左右位置不想等,3、4号卡片错位了。

insertLeading方法中
`
// Laid out the child before the leading.

data.trailingLayoutOffset = leading.layoutOffset! - gridDelegate.mainAxisSpacing;

data.layoutOffset = data.trailingLayoutOffset - paintExtentOf(child);

`

Logs

Example code (optional)

Contact

No response

@zmtzawqlp
Copy link
Member

你的加载出来的图片。记得自己记录下宽高比,不然都会重新layout计算。。理论上接口应该提供图片的宽高

@yx-mike
Copy link
Author

yx-mike commented Jan 24, 2025

你的加载出来的图片。记得自己记录下宽高比,不然都会重新layout计算。。理论上接口应该提供图片的宽高

有用AspectRatio

Image

我们这个组件用了很久了,最近才发现这个小问题,并不影响业务。

我复现没用图片,就一个Container,高度都是50。在瀑布流最前面左右放两个一样的Container,翻页之后再回到顶部。

就会调用insertLeading方法计算,这是时候计算精度就不对了,左边的layoutOffset变成0.00000000000000XX,右边的还是0。

这样后面的insert方法执行时候,后面3、4号位置卡片计算的时候,final SliverWaterfallFlowParentData min获取的就不对了。

不过这只是一瞬间的bug,就是在往回划动时候的某一帧出现错位,马上位置重新计算后就正确了,而且只是在很慢的划动时候才出现。

@yx-mike
Copy link
Author

yx-mike commented Jan 24, 2025

看我自己的修改:

Image

@zmtzawqlp
Copy link
Member

精度问题一直都有,我按照其他组件一起改一下号了。。大概跟你说的一样

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants