flutter 点击按钮和外部区域 控制组件显示,隐藏

在一次做界面隐藏显示的时候。遇到一个小问题
点击按钮外部区域隐藏,点击按钮自身弹出和隐藏

//首先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;//对外抛出点击位置
},
),

好了。去玩吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值