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

时间:2018-06-27 17:36:29

标签: listview flutter flutter-layout flutter-sliver 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,);
}

非工作代码:     //此代码成功打印,但未真正调用该函数

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

按下浮动按钮之前 Before Pressing Floating Button 按下浮动按钮后 After Pressing Floating Button

1 个答案:

答案 0 :(得分:2)

在构建ListView或添加项目(不确定其操作方式)时,请使用SchedulerBinding.instance.addPostFrameCallback更改下一帧的滚动位置。

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