Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在下拉事件中检测模式表_Flutter_Flutter Layout_Flutter Dependencies_Flutter Animation - Fatal编程技术网

Flutter 在下拉事件中检测模式表

Flutter 在下拉事件中检测模式表,flutter,flutter-layout,flutter-dependencies,flutter-animation,Flutter,Flutter Layout,Flutter Dependencies,Flutter Animation,是否可以在向下拖动底部工作表时截取事件,并在其即将关闭时显示消息?这不是一个确定的答案,但我在这里发帖,因为它提供了一个方向,并且对于注释来说太长(因为链接) BottomSheet类定义当用户开始拖动底部工作表时的回调 _ModalBottomSheet作为onDragStart和onDragEnd参数传递给它的BottomSheet子级 因此,从理论上讲,如果你真的想,你可以按照“ModalBottomSheet”的例子来实现定制的底部表单,并根据需要来定制这些内容。试试这个 我添加了boo

是否可以在向下拖动底部工作表时截取事件,并在其即将关闭时显示消息?

这不是一个确定的答案,但我在这里发帖,因为它提供了一个方向,并且对于注释来说太长(因为链接)

BottomSheet类定义当用户开始拖动底部工作表时的回调

_ModalBottomSheet作为onDragStart和onDragEnd参数传递给它的BottomSheet子级

因此,从理论上讲,如果你真的想,你可以按照“ModalBottomSheet”的例子来实现定制的底部表单,并根据需要来定制这些内容。

试试这个

我添加了bool变量,检查底部工作表是否打开或关闭, (我也在appBar中打印了此操作)

class Home扩展StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
bool-isOpen=false;
无功功率控制器;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:对,
标题:isOpen?文本(“打开底页”):文本(“关闭底页”),
),
正文:
浮动操作按钮(
已按下:(){
设置状态(){
等参=!等参;
});
打印(“点击底部页面”);
if(等参线){
bottomSheetController=showBottomSheet(
背景颜色:颜色。透明,
上下文:上下文,
建造商:(ctx){
返回ClipRRect(
borderRadius:仅限borderRadius(
右上角:半径。圆形(20),
左上:半径。圆形(20),
),
子:容器(
身高:150,
颜色:颜色,黑色,
子项:TextField()
),
);
});
bottomSheetController.closed.then((值){
设置状态(){
等参=!等参;
});
});
}否则{
Navigator.of(context.pop();
设置状态(){
等参=!等参;
});
}
},
子项:等参图标(图标。向下箭头):图标(图标。向上箭头),
),
);
}
}

如果您只是想在底部工作表关闭时得到通知,您可以依赖showBottomSheet()返回的控制器,该控制器将显示
class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
  bool isOpen = false;

  var bottomSheetController;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: isOpen?Text("Open Bottom Sheet"):Text("Closed Bottom Sheet"),
      ),
        body:
        FloatingActionButton(
          onPressed: () {
            setState(() {
              isOpen = !isOpen;
            });
            print('clicked on the bottom sheet');
            if(isOpen) {
              bottomSheetController = showBottomSheet(
                  backgroundColor: Colors.transparent,
                  context: context,
                  builder: (ctx) {
                    return ClipRRect(
                      borderRadius: BorderRadius.only(
                        topRight: Radius.circular(20),
                        topLeft: Radius.circular(20),
                      ),
                      child: Container(
                          height: 150,
                          color: Colors.black,
                          child: TextField()
                      ),
                    );
                  });
              bottomSheetController.closed.then((value) {
                setState(() {
                  isOpen = !isOpen;
                });
              });
            } else {
              Navigator.of(context).pop();
              setState(() {
                isOpen = !isOpen;
              });
            }
          },
          child: isOpen?Icon(Icons.arrow_downward):Icon(Icons.arrow_upward),
        ),
      );
  }
}