flutter - 如何在颤动中仅向下滚动?
问题描述
我有一个可以上下滚动的 Pageview 滚动条。一旦向下滚动不能向上滚动,我可以让它只向下滚动吗?我用谷歌搜索,但我没有发现任何有用的东西
更新 :
class _ScrollDownOnlyState extends State<ScrollDownOnly> {
bool checkDir = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Down scroll"),
),
body: PageView.builder(
scrollDirection: Axis.vertical,
physics: checkDir ? const NeverScrollableScrollPhysics() : const AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
print("checl $checkDir");
return GestureDetector(
onPanUpdate: (details) {
print(details.delta.dy);
if (details.delta.dy > 0) {
setState(() {
checkDir = true;
});
}
if (details.delta.dy < 0) {
// set your var
setState(() {
checkDir = false;
});
}
},
child: Container(
margin: EdgeInsets.only(top: 20),
color: Colors.pink,
child: Center(
child: Text(
"${index + 1}",
style: TextStyle(color: Colors.white, fontSize: 30),
),
),
),
);
},
itemCount: 50,
),
);
}
}
解决方案
例如,您可以使用 varscrollDir
并将其应用于PageView
physics: scrollDir ? const NeverScrollableScrollPhysics() : const AlwaysScrollableScrollPhysics(),
随着NeverScrollableScrollPhysics()
你阻止滚动能力。随着AlwaysScrollableScrollPhysics()
您激活滚动功能。
GestureDetector
通过检测向上或向下滚动,您将获得完全控制。它可能看起来像这样:
PageView(
children: <Widget>[
// Add children here
GestureDetector(
onPanUpdate: (details) {
if (details.delta.dy > 0) {
setState(() {
checkDir = true;
});
}
if (details.delta.dy < 0) {
// set your var
checkDir = false;
}
},
child: Container(child: Text('MY WIDGETS')))
],
physics: checkDir
? const NeverScrollableScrollPhysics()
: const AlwaysScrollableScrollPhysics(),
)),
Scrollphysics 文档:https ://api.flutter.dev/flutter/widgets/ScrollPhysics-class.html
GestureDetector 文档:https ://api.flutter.dev/flutter/widgets/GestureDetector-class.html
推荐阅读
- r - 用于对数据框进行排序的 R 程序给了我不正确的输出
- hyperledger-sawtooth - 锯齿交易处理器没有响应
- c# - 1fichier.com 的 HTTP 基本身份验证
- c++ - 即使使用包含保护也会出现多个定义错误
- javascript - 使用 javascript 在控制器中调用操作并更新视图
- kubernetes - 将 YAML 转换为 JSON 时出错:在此上下文中不允许映射值
- android - Android在对话框中创建一个videoView,并在准备好时弹出它
- python - 区分数据集中的相应阶段
- python - 我在 whois 命令上执行此操作,它给我写了这个错误 [discord.py]
- python - 如何将批处理数据集转换为 numpy