final itemKey = GlobalKey();
final scrollController = ScrollController();
@override
void dispose() {
scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
// Return your widget tree in here.
// I am only showing the ListView section.
...
ListView(
...,
controller: scrollController,
// You can also use a builder list view or w/e else.
// You only need to supply the GlobalKey to exactly one item.
children: <Widget>[
SomeWidget(
key: itemKey,
...,
),
],
)
...
}
现在,您可以滚动到所选项目:
scrollController.position.ensureVisible(
itemKey.currentContext.findRenderObject()!,
alignment: 0.5, // How far into view the item should be scrolled (between 0 and 1).
duration: const Duration(seconds: 1),
);
2条答案
按热度按时间bq3bfh9z1#
您可以将
GlobalKey
指定给要滚动到的项目,并使用ScrollPosition.ensureVisible
。全局密钥
您需要全局密钥才能访问小部件的
RenderObject
。您需要将此全局密钥作为变量存储在
StatefulWidget
中(最好是)。∮ ∮ ∮ ∮ ∮
您还需要存储一个滚动控制器,以便滚动到列表视图的位置。
下面是在小部件的
State
中执行此操作的方法:现在,您可以滚动到所选项目:
w8rqjzmb2#
您还可以使用
Scrollable
小部件滚动到特定小部件:itemKey是一个
GlobalKey
,它被分配给小工具的key
属性