-
-
Notifications
You must be signed in to change notification settings - Fork 46
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
请问配合上SliverStickyHeader该如何使用? #45
Comments
|
哦哦原来如此 |
在使用 但是如果我jumpTo第四个,然后再jumpTo第三个,再jumpTo第二个,再jumpTo第一个之后我再jumpTo第四个。此时就可以直接jumpTo第一个了。请问有什么解决方法吗? |
23-08-29-15-11-12.mp4 |
补充说明:监听了一下这四个context,发现第一个context的firstChild一直为空, |
这个是否可以提供一个可复现的 |
我试试看,我把SliverFixedExtentList改成SliverList之后就没问题了,只是如果间隔太远的话,jumpTo会卡... |
产品运营的话都是不能信的 😂 |
flutter3.10.5
|
一开始点“四”,再点“一”就能复现 |
你的 jumpToSliverTop(BuildContext context) async {
final indexOffsetMap =
sliverObserverController.indexOffsetMap[context] ?? {};
if (indexOffsetMap[0] == null) {
final obj = ObserverUtils.findRenderObject(context);
if (obj is! RenderSliverMultiBoxAdaptor) return;
if (obj.firstChild == null) {
await sliverObserverController.controller?.animateTo(
obj.constraints.precedingScrollExtent,
curve: Curves.ease,
duration: const Duration(milliseconds: 1),
);
await SchedulerBinding.instance.endOfFrame;
}
}
sliverObserverController.jumpTo(
sliverContext: context,
index: 0,
isFixedHeight: true,
offset: (offset) {
return ObserverUtils.calcPersistentHeaderExtent(
key: appBarKey,
offset: offset,
);
},
);
} 使用 jumpToSliverTop(contextList[index]); |
好的我明天试试。这里的意思是先往上滚动到加载出第一个context,然后再jump? |
是的,间隔多个后目标sliver没有任何子部件被渲染,所以这里先回到目标sliver的头部,待渲染完毕后再做跳转 |
完美ok了,感谢。期待大佬调整后的新版本。看大佬的源码,属于是第一次那么深入地去看sliver那堆东西了 |
感谢你的反馈,问题已在 |
现在有一个CustomScrollView长这样
假设我第一个SliverStickyHeader底下的list长度为4,第二个SliverStickyHeader底下的list长度为3,我这样给
_sliverListCtx
赋值后,我使用sliverObserverController.animateTo
,它的index最多就只能是3,大于3就会失效。请问有什么办法可以解决吗?由于一些依赖问题,我现在用的还是3.10.5,升不了3.13,用不了SliverMainAxisGroup..The text was updated successfully, but these errors were encountered: