- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个 NestedScrollView
,当我使用 SliverAppBar
时,它可以很好地自动隐藏 AppBar(我想要的一个功能)。我遇到问题的地方是我使用 ListView.Builder
作为下游的主体组件之一,我需要将其自己的 ScrollController
应用到(或者似乎我需要应用它这里)。这与 NestedScrollView
冲突,我失去了由 NestedScrollView
和 SliverAppBar
方便处理的 appbar 的自动隐藏。
如果我在 NestedScrollView
上附加 ScrollController
那么它只跟踪滚动位置直到偏移 80.0 之后,使用更长的 ListView 我无法正确animateTo 我可以使用直接附加到 ListView.Builder
的 ScrollController。
这是我的实现的片段/sudo 代码:
new Scaffold(
drawer: ...,
body: new NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return [
new SliverAppBar(
title: new Text('Title'),
floating: true,
snap: true
)
]
}
body: new Stack(
children: <Widget>[
new PageView(
children: <Widget>[
new PageView1(implements ListViewBuilder),
new PageView2(implements ListView),
new PageView3(implements ListView),
]
controller: _pageController,
),
new FloatingActionButton
]
)
)
)
class PageView1 extends StateFulWidget {
...//Builder return scrollable with max offset of 2000.0
return new ListView.builder(
itemBuilder: itemBuilder,
itemCount: objects.length,
controller: _scrollController,
);
...
@override
void initState{
scrollController = new scrollController();
scrollController.animateTo(800.0, ....);
}
}
这方面的好处是 PageView2 和 3 表现得很好,因为我没有在那里创建 ScrollControllers,所以在滚动行为上自动隐藏了应用栏。但是,PageView1 行为不正确,并且 appbar 的 autoHide 中断。但是,我真的希望能够正确地进行动画处理,并且如果不将 Controller 直接放在 ListViewBuilder 上就无法这样做。
有什么想法可以帮助我实现这一目标吗?
更新:我已经更新了我的实现,以更紧密地遵循 NestedScrollView 文档。但是,没有运气。好像在 NestedScrollView 上添加 ScrollController 只跟踪 SliverAppBar 的位置,而 ScrollController.jumpTo 或 animateTo 只跳转到 AppBar 的最大值(偏移 80)
我解决了.. 这根本不是我所期望的。我将 SliverList 移到 headerSliverBuilder 中,它按我想要的方式工作。我从这个 NestedScrollView 示例要点中得到了提示:https://gist.github.com/collinjackson/2bc6697d31e6b94ada330ef5e818a36f
最佳答案
将您的 ListView 更改为 SliverList 或 SliverFixedExtentList 并将其包裹在安全区域和 CustomScrollView 内:
return SafeArea(
top: false,
bottom: false,
child: Builder(builder: (BuildContext context) => CustomScrollView(
slivers: <Widget>[
return SliverFixedExtentList(
itemExtent: 100.0,
delegate: SliverChildBuilderDelegate(
(BuildContext context, int i) => ChildWidget(items[i]),
childCount: items.length,
),
),
],
)),
);
关于flutter - 使用 NestedScrollView 并向 ListView 下游提供 ScrollController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49889673/
我正在监听 PageController 以获取位置,然后将其与 ListView 同步。当操作 PageView 时,同时操作 ListView。 示例:https://github.com/Ram
我有一个附加到 Listview 的 ScrollController,但是当我滚动时它会抛出异常: @override initState() { super.initState();
我正在 flutter 中使用 DraggableScrollableSheet,我想知道工作表是折叠还是展开。 DraggableScrollableSheet 的构建器提供了一个 scrollCo
它在列表中的最后一个元素之前停止。有没有办法直到最后一个元素的结束容器 controller ..animateTo( controller
我正在尝试使用自定义ScrollController初始化SingleChildScrollView以从某个位置开始。我以为我可以使用initialScrollOffset并在init方法中设置一个初
一旦获得有关最大滚动范围的信息,我就会尝试显示一个小部件。如果我将 ScrollController 的实例分配给可滚动小部件的 controller 属性,我就可以找到该数字。 我的问题是 Scro
我正在为 SingleChildScrollView 小部件使用 ScrollController,我想在其中检测滚动开始、结束/停止和仍在滚动的时间? 如何检测,我正在使用 Listene scro
我正在使用 CustomScrollView,并为它提供了一个 Controller 。ScrollController 有效,我什至给它添加了一个监听器并打印出 ScrollView 的位置。 Cu
我已将 ScrollController 附加到 [SliverAppBar, SliverList] 的 CustomScrollView 在默认情况下,我会使用 reverse:true 和 an
我有一个 NestedScrollView,其中包含一个 SliverAppBar 和一个 TabBarView,每个选项卡都包含一个无限加载列表。现在我只有一个 ScrollController 附
当呈现多个小部件实例并且调用 getValue 方法时,flutter 会抛出附加到多个 ScrollView 的错误 ScrollController。我假设这是因为它们都使用相同的 Control
我想为 CustomScrollView 制作某种自定义滚动进度指示器。 _scrollController = ScrollController()..addListener(_scroll); v
我有一个带有 child 的有状态小部件 final _scrollController = TrackingScrollController(); PageView( controller: _
我创建了一个聊天应用程序的设计,并尝试滚动到自动结束,我使用了这段代码 scrollController.animateTo( scrollController.position.
我可以将 ScrollController 添加到 ListView。我试图对 SliverList 做同样的事情,但我意识到没有参数来添加 Controller 。有没有其他方法可以实现这一目标?
我想使用 scrollController 在 listView 的底部显示索引,如下图所示: 在用户向下滚动或向上滚动后,左侧以红色突出显示的计数会根据用户的滚动方向增加/减少。 我要实现的是自动更
有两个选项可以检索 CustomScrollView 的滚动位置。 documentation声明如下: ScrollNotification and NotificationListener, wh
我的 Flutter 应用程序在离开具有 ScrollController 以控制 NestedScrollView 的页面时抛出异常(ScrollController 附加到多个 ScrollVie
我有一个 NestedScrollView,当我使用 SliverAppBar 时,它可以很好地自动隐藏 AppBar(我想要的一个功能)。我遇到问题的地方是我使用 ListView.Builder
我是 Flutter 的新手,刚刚学习了如何从 firestore 检索数据并做了一些 UI。现在我有两个问题; 1- 这是一个设置页面,其中有 CustomScrollView 包含用于 Contr
我是一名优秀的程序员,十分优秀!