在混乱中,我们有一个小部件 DraggableScrollableSheet 。现在,我希望在拖动时孩子的当前位置或当前大小。当前无法获得该价值。它在其builder方法中提供了一个ScrollController,但这是用于列表滚动时而不是拖动列表时。那么,还有另一种方法可以跟踪列表的当前拖动位置吗?
我尝试添加NotificationListener,但这只给了我dragstartnofification和dragendnotification,而对于dragupdate没有任何帮助:
DraggableScrollableSheet(
initialChildSize: .70,
minChildSize: .70,
builder:
(BuildContext context, ScrollController scrollcontroller) {
return NotificationListener(
onNotification: (notification) {
print("$notification");
},
child: Container(
child: ListView.builder(
controller: scrollcontroller,
itemCount: widget.songs.length,
itemBuilder: (BuildContext context, int index) {
return buildSongRow(widget.songs[index]);
}),
),
);
}),
答案 0 :(得分:0)
我找到了解决方案。 Flutter团队更新了Flutter v1.7.3中的ScrollableDraggableSheet类。他们添加了一个名为DraggableScrollableNotification的类,您可以在拖动时听取该类以获取子级的当前扩展。
NotificationListener<DraggableScrollableNotification>(
onNotification: (notification) {
print("${notification.extent}");
},
child: DraggableScrollableSheet(
initialChildSize: .70,
minChildSize: .70,
builder:
(BuildContext context, ScrollController scrollcontroller) {
return Container(
child: ListView.builder(
controller: scrollcontroller,
itemCount: widget.songs.length,
itemBuilder: (BuildContext context, int index) {
return buildSongRow(widget.songs[index]);
}),
);
}),
)
上面示例 notification.extent 中的将为您提供拖动时子级的当前范围(位置)。
注意:这是当前在主频道中,而不是在稳定频道中 渠道。通过运行 flutter频道主频道,切换到主频道 然后动态升级以使其暂时正常运行。