flutter - 如何在 flutter 中仅向下滚动?

标签 flutter

我有一个网页浏览滚动条,可以上下滚动。一旦向下滚动不能向上滚动,我可以让它只向下滚动吗?我用谷歌搜索,但没有找到任何有用的东西

更新:

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/

相关文章:

image - Flutter::无效的参数:URI文件://图像名称中未指定主机

android - 没有创建 Firebase App '[DEFAULT]' - 调用 Firebase.initializeApp() 仍然存在相同的错误

flutter - 是否可以在 dart 中创建字符串扩展 `isEmptyOrNull` ?

flutter - 将hasura与flutter一起使用,出现以下错误,Graphql版本^ 3.0.0

android - 如何在我的 Flutter 应用中实现 Branch SDK

android - 缺少插件异常(在 channel plugins.flutter.io/firebase_core 上找不到方法 firebase#initializecore 的实现)

flutter - dart pub 是否升级,升级所有依赖项,或者我们必须手动更改那些发生重大更改的内容?

flutter - 从父小部件 flutter 启动和停止秒表

Flutter-如何在集成测试中获得小部件计数

firebase - SetState为String会返回null,使用Flutter进行Firestore