gpt4 book ai didi

flutter - 如何使用 PrimaryScrollController 从 NestedScrollView 中的 CustomScrollView 获取偏移量

转载 作者:行者123 更新时间:2023-12-04 12:50:29 24 4
gpt4 key购买 nike

我有一个 NestedScrollViewSliverAppBar . NestedScrollView的 body 是一个带有 CustomScrollView 的小部件与 SliverList .

我想从 ScrollController 获得偏移量给予 NestedScrollView但它只给我偏移量直到 SliverAppBar不在视野范围内,但在那之后 SliverList继续滚动但 ScrollController不提供偏移量。

NestedScrollView(
headerSliverBuilder: (_, __) => SliverAppBar(..),
body: RefreshIndicator(
child: CustomScrollView(..),
),
)
CustomScrollView将自动使用 PrimaryScrollControllerNestedScrollView 提供.
当监听器附加到该 ScrollView 时,监听器将在 SliverAppBar 时被调用。滑入视野和滑出视野直到 position.extentAfter 等于 0.0然后它根本不会更新,无论你向下滚动多远,因为 extentAfter始终停留在 0.0 .

如何检索 CustomScrollView 的滚动位置内部 NestedScrollView ?

执行

重要的是 PrimaryScrollController使用是因为 ScrollController应该具有 PrimaryScrollController的特点.不管怎样,为了 SliverAppBar工作,即它随着内容滚动到 View 之外 NestedScrollView controller参数需要匹配 CustomScrollView controller (或 primary )参数不知何故。

Here is a demo .

任何允许使用 PrimaryScrollController.of(context) 滚动内容的实现很好。
请注意, NestedScrollViewRefreshIndicator 所必需出现在 SliverAppBar 下方.

最佳答案

也许我能帮你!

Widget build(BuildContext context) {
return Scaffold(
body: NestendScrollView(
headerSliverBuilder: (BuildContext context, bool value) {
return <Widget>[
SliverAppBar(),
];
},
body: SafeArea(
child: Builder(
builder: (context) {
final _scr = PrimaryScrollController.of(context);
_scr.addListener(() {
if (_scr.position.pixels == _scr.position.maxScrollExtent) {
print('At DOWNW!!!');
}
});

return CustomScrollView(
controller: _scr,
slivers: <Widget>[
SliverOverlapAbsorber(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(
context,
),
),
SliverList(
delegate: SliverChildListDelegate(
List.generate(100, (int index) {
return Text('ITEM -> $index');
}),
),
)
],
);
},
),
),
),
);
}

关于flutter - 如何使用 PrimaryScrollController 从 NestedScrollView 中的 CustomScrollView 获取偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55307231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com