我有一个网页浏览滚动条,可以上下滚动。一旦向下滚动不能向上滚动,我可以让它只向下滚动吗?我用谷歌搜索,但没有找到任何有用的东西
更新:
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,
),
);
}
}
最佳答案
例如,您可以使用 var scrollDir
并将其应用于 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(),
)),
滚动物理学文档:https://api.flutter.dev/flutter/widgets/ScrollPhysics-class.html
GestureDetector 文档:https://api.flutter.dev/flutter/widgets/GestureDetector-class.html
关于flutter - 如何在 flutter 中仅向下滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66476476/