在一次做界面隐藏显示的时候。遇到一个小问题
点击按钮外部区域隐藏,点击按钮自身弹出和隐藏
//首先flutter 显示隐藏控件Offstage (弹出布局)
bool hidden=true;//默认隐藏
Offstage(
offstage: hidden,
child: _child(),
));
然后:全局Listener
Offset down0;//全局的点击位置记录
Offset down1;//按钮的点击位置记录
@override
Widget build(BuildContext context) {
return Listener(
child: buildScaffold(buildBody(context), context),//页面整体布局
onPointerDown: (detail) {
down0= detail.position;
//监听全页面的点击
if(down1!=null&&down0.dy== down1.dy&&down0.dx== down1.dx){
hidden=!hidden;//icon被点击
}else{
hidden =true;//icon外部区域被点击
}
setState(() {});
},
);
}
//点击icon
GestureDetector(
child:_icon(),//点击按钮布局
onPanDown: (detail) {
down1= detail.globalPosition;//对外抛出点击位置
},
),
好了。去玩吧