我想在每次页面向前/向后更改时应用NeversCrollablesCrollPhysics(),然后在3秒后返回AlwaysCrollableScrollPhysics()。
我该如何实现这种行为?
我尝试在OnPageChanged侦听器中设置状态,但它会破坏页面视图。
class _HomePageState extends State<HomePage> {
ScrollPhysics myScrollPhysics = AlwaysScrollableScrollPhysics();
@override
Widget build(BuildContext context) {
return PageView(
scrollDirection: Axis.vertical,
controller: myPageController,
physics: myScrollPhysics,
onPageChanged: (index){
setState((){
myScrollPhysics = NeverScrollableScrollPhysics();
})
},
children: [...]
)
}
最佳答案
这本书的作用是:
在这个函数中,您需要等待3秒钟才能更改状态和物理。
void _scrollOn() async {
myScrollPhysics = NeverScrollableScrollPhysics();
await Future.delayed(const Duration(seconds: 3));
setState((){
myScrollPhysics = AlwaysScrollableScrollPhysics();
})
}
onPageChanged: (index){
setState((){
_scrollOn();
})
},