我正在使用CustomScrollView,并为其提供控制器。ScrollController可以工作,我什至在其中添加了一个侦听器并打印出滚动视图的位置。
CustomScrollView(
controller: _scrollController,
Run Code Online (Sandbox Code Playgroud)
现在,我要做的就是跳到initState()函数中的50.0位置。
_scrollController.jumpTo(50.0);
Run Code Online (Sandbox Code Playgroud)
但是,我得到了错误
scrollController未附加到任何滚动视图
car*_*sx2 33
拖延它不是正确的解决方案。最好等到树通过使用完成构建
WidgetsBinding.instance
.addPostFrameCallback((_){});
Run Code Online (Sandbox Code Playgroud)
样本
WidgetsBinding.instance.addPostFrameCallback((_) {
if(pageController.hasClients){
pageController.animateToPage(page index, duration: Duration(milliseconds: 1), curve: Curves.easeInOut);
}
});
Run Code Online (Sandbox Code Playgroud)
Luc*_*nto 10
我对两个控制器使用相同的 ScrollController 解决了我的问题。首先我创建 ScrollController():
ScrollController scollBarController = ScrollController();
Run Code Online (Sandbox Code Playgroud)
在我的代码中:
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Scrollbar(
controller: scollBarController,
isAlwaysShown: true,
child: StaggeredGridView.count(
controller: scollBarController,
crossAxisCount: 16,
staggeredTiles: _staggeredTamanho,
shrinkWrap: true,
children: [
...
], //listStaggered,
mainAxisSpacing: 7.0,
),
),
),
Run Code Online (Sandbox Code Playgroud)
小智 7
首先通过使用其hasClients属性检查scrollController是否已附加到滚动视图。
if (_scrollController.hasClients)
_scrollController.jumpTo(50.0);
Run Code Online (Sandbox Code Playgroud)
@carlosx2 答案是正确的,但如果有人想知道将 WigetsBinding 放在哪里。所以在这里。
@override
void initState(){
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_){
//write or call your logic
//code will run when widget rendering complete
});
}
Run Code Online (Sandbox Code Playgroud)
要设置的初始位置ScrollController,请使用initialScrollOffset属性:
_scrollController = ScrollController(initialScrollOffset: 50.0);
Run Code Online (Sandbox Code Playgroud)
初始化滚动控制器:
ScrollController _scrollController = ScrollController();
Run Code Online (Sandbox Code Playgroud)
在您想要滚动的位置使用以下代码:
SchedulerBinding.instance.addPostFrameCallback((_) {
_scrollController.jumpTo(_scrollController.position.maxScrollExtent);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4695 次 |
| 最近记录: |