flutter - 如何在页面更改时动态更改 ScrollPhysics
问题描述
我想在每次页面向前/向后更改时应用 NeverScrollableScrollPhysics(),然后在 3 秒后返回 AlwaysScrollableScrollPhysics()。我将如何实现这种行为?
我曾尝试在 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();
})
},
推荐阅读
- sql-server - 如何在 hbernate 中获取 nVarchar 的实际值
- xaml - 如何在 MasterPage 中选择的项目上显示选择器?
- java - 有没有一种功能性的方法来遍历基于最后处理的项目的流累积和过滤?
- c# - 如何自动更改新 .zip 文件的名称?
- activerecord - 如何将数据数组保存到数据库
- swift - 如何引用作为关联类型的协议的属性?
- react-native - 有没有办法更改顶部选项卡导航器的字体颜色和下划线颜色?
- javascript - 如何使用 .map 将数组的 php 数组转换为 js 数组以重新格式化
- amazon-web-services - AWS.Amplify 不是构造函数
- apache-kafka - Kafka Streams:如何修复 Serde 转换错误