Flutter:屏幕打开时自动滚动到底部

Raj*_*Jr. 8 listview flutter flutter-sliver flutter-layout flutter-animation

我正在使用 onpressed() 向下滚动到列表视图的底部,但我想在不按下按钮的情况下实现这一点,

它必须为每个屏幕打开自动滚动。 我试图把它放在 initState() 里面它不起作用但是如果我按下按钮它会起作用

如何让它自动滚动?

工作代码:

 floatingActionButton: new FloatingActionButton(child: 
 Icon(Icons.arrow_downward),onPressed:_hola,)



_hola(){
  print("inti state started successfully");
controller1.animateTo(
controller1.position.maxScrollExtent,
  duration: const Duration(milliseconds: 10),
   curve: Curves.easeOut,);
}
Run Code Online (Sandbox Code Playgroud)

Non Working Code: //此代码打印成功,但并未真正调用该函数

class HomeState extends State<MyNewMessages> {
  @override
  void initState() 
{
 super.initState();
  print("hola is scrolling");
  _hola;
}
);
}
Run Code Online (Sandbox Code Playgroud)

在按下浮动按钮之前 在按下浮动按钮之前 按下浮动按钮后 按下浮动按钮后

Jac*_*ips 17

在构建 ListView 或添加项目时(不确定你是如何做的),用于SchedulerBinding.instance.addPostFrameCallback更改下一帧的滚动位置。

SchedulerBinding.instance.addPostFrameCallback((_) {
  controller1.animateTo(
    controller1.position.maxScrollExtent,
    duration: const Duration(milliseconds: 10),
    curve: Curves.easeOut,);
  });
}
Run Code Online (Sandbox Code Playgroud)

  • 我通常不会在这里说谢谢,但这次我必须对@JacobPhillips 说一个大大的**谢谢**来解决这个问题!我花了几个小时试图完成这个结果,“SchedulerBinding”(这对我来说是全新的)让我开心。多谢,伙计! (2认同)