有没有办法关闭包含列表视图的Flutter中的模态底部工作表?

时间:2020-09-28 19:48:30

标签: flutter listview

因此,基本上,我已经尝试了几天,以使用户在滑入ListView时,在到达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提供了以下使用此package的软件包建议!非常感谢

1 个答案:

答案 0 :(得分:0)

您能详细说明您要做什么吗? 关闭ModalBottomSheet的正常方法是通过Navigator.pop(context)