在Flutter中,有没有一种方法可以关闭包含ListView的底部模态表格?

3

基本上,我已经尝试了几天来允许用户在ListView顶部滑动时关闭模态底部表单。然而,当他们在列表视图上滑动时,小部件会注册,好像我只是在尝试向上滚动ListView一样。是否有ListView的物理类型可以在顶部关闭模态底部表单,或者设置忽略指针的不同方式?这就是我想到的解决方案,我希望我已经足够清楚地说明了这个问题。

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

class ModalSheet extends StatefulWidget {
  @override
  _ModalSheetState createState() => _ModalSheetState();
}

ScrollController _scrollController = ScrollController();
bool close = false;

class _ModalSheetState extends State<ModalSheet> {
  @override
  void initState() {
    super.initState();
    _scrollController.addListener(() {
      if (_scrollController.position.pixels < 1) {
        if (_scrollController.position.userScrollDirection ==
            ScrollDirection.forward) {
          setState(() {
            close = true;
          });
        } else {
          setState(() {
            close = false;
          });
        }
      } else {
        setState(() {
          close = false;
        });
      }
      print(_scrollController.position.pixels);
      print(_scrollController.position.userScrollDirection);
      print(close);
      // print(close);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          Flexible(
            child: IgnorePointer(
              ignoring: close,
              child: ListView.builder(
                controller: _scrollController,
                physics: BouncingScrollPhysics(),
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text('tile: ${index + 1}'),
                  );
                },
              ),
            ),
          ),
        ],
      ),
    );
  }
}

编辑:感谢 @LearningJS888 提供下面使用这个的建议!非常感谢

1个回答

0
可以详细说明一下你正在尝试做什么吗? 关闭 ModalBottomSheet 的常规方法是通过 Navigator.pop(context)

我希望能够通过在ListView上向下滑动来关闭ModalBottomSheet,但仅当ListView在顶部时才能这样做。类似于社交媒体应用程序,底部表单弹出并将您带到网页,当您滚动到网页顶部后,如果继续向下滑动,则现在控制的是表单而不是可滚动小部件内部的内容。希望这更清晰明了。 - gregp
1
啊,我明白了,试试这个 - swedishcheef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接