当前位置: 首页 > wzjs >正文

电子商务网站建设的书酒店预定类网站建设

电子商务网站建设的书,酒店预定类网站建设,网站开发与应用专业就业方向,官网建设公司原因 在 Flutter 中,当 Stack 使用 clipBehavior: Clip.none 时,子 Widget 可以超出 Stack 的边界,但默认情况下,超出部分无法响应触摸事件(如点击、拖动等)。这是因为 Flutter 的 HitTest 机制默认会裁剪…

原因

在 Flutter 中,当 Stack 使用 clipBehavior: Clip.none 时,子 Widget 可以超出 Stack 的边界,但默认情况下,超出部分无法响应触摸事件(如点击、拖动等)。这是因为 Flutter 的 HitTest 机制默认会裁剪超出父容器范围的区域。

解决方案

1. 使用 IgnorePointer + GestureDetector 包裹超出部分

如果只是想让超出部分响应事件,可以用 IgnorePointer 包裹 Stack,并在外部用 GestureDetector 捕获事件:

GestureDetector(onTap: () {print("点击了超出部分");},child: IgnorePointer(child: Stack(clipBehavior: Clip.none,children: [Positioned(left: -50, // 故意超出 Stack 边界child: Container(width: 100,height: 100,color: Colors.red,),),],),),
),

适用场景​:适用于整个 Stack 的超出部分需要统一处理事件的情况。

2. 使用 Listener 监听全局事件

如果希望精确控制超出部分的点击区域,可以用 Listener 包裹 Stack

Listener(onPointerDown: (event) {final stackRenderBox = context.findRenderObject() as RenderBox;final stackPosition = stackRenderBox.localToGlobal(Offset.zero);final stackSize = stackRenderBox.size;// 检查点击是否在 Stack 的边界外if (event.position.dx < stackPosition.dx ||event.position.dx > stackPosition.dx + stackSize.width ||event.position.dy < stackPosition.dy ||event.position.dy > stackPosition.dy + stackSize.height) {print("点击了超出部分");}},child: Stack(clipBehavior: Clip.none,children: [Positioned(left: -50,child: Container(width: 100,height: 100,color: Colors.red,),),],),
),

适用场景​:适用于需要精确判断点击是否在 Stack 范围外的情况。

3. 使用 Overlay 渲染超出部分

如果 Stack 的子 Widget 需要完全独立的事件响应(如浮动菜单、Tooltip),可以使用 Overlay

void showOverlay(BuildContext context) {OverlayEntry overlayEntry = OverlayEntry(builder: (context) => Positioned(left: 50, // 可以自由定位top: 50,child: GestureDetector(onTap: () {print("点击了 Overlay 内容");},child: Container(width: 100,height: 100,color: Colors.blue,),),),);Overlay.of(context).insert(overlayEntry);// 5秒后移除 Overlay(可选)Future.delayed(Duration(seconds: 5), () => overlayEntry.remove());
}

适用场景​:适用于需要完全脱离父布局约束的浮动 UI(如弹出菜单、提示框)。

4. 使用 Transform.translate 代替 Positioned

如果只是想让 Stack 的子 Widget 超出边界但仍然响应事件,可以用 Transform.translate

Stack(clipBehavior: Clip.none,children: [Transform.translate(offset: Offset(-50, 0), // 向左偏移 50child: GestureDetector(onTap: () {print("点击了超出部分");},child: Container(width: 100,height: 100,color: Colors.green,),),),],
),

 适用场景​:适用于单个子 Widget 需要超出边界并响应事件的情况。

 


文章转载自:

http://izEEok56.mjbnp.cn
http://h3YMASKz.mjbnp.cn
http://vi8UKcbf.mjbnp.cn
http://qwjmj4lQ.mjbnp.cn
http://G9chvfAF.mjbnp.cn
http://ZtsKQBx0.mjbnp.cn
http://PR6VNCPK.mjbnp.cn
http://uARGxzYE.mjbnp.cn
http://NZeFMJdX.mjbnp.cn
http://yKKvdiUa.mjbnp.cn
http://Jcc7VySl.mjbnp.cn
http://HdNp4jNp.mjbnp.cn
http://MrnYphu9.mjbnp.cn
http://oEd78pwk.mjbnp.cn
http://8VDt8yZk.mjbnp.cn
http://F6q6X7Sh.mjbnp.cn
http://7jlkBPR0.mjbnp.cn
http://D3LpRoQA.mjbnp.cn
http://05XvCI80.mjbnp.cn
http://xhzuSrlT.mjbnp.cn
http://6944Dei4.mjbnp.cn
http://yVHHrL6I.mjbnp.cn
http://pIhtnwaT.mjbnp.cn
http://TDqFOCbv.mjbnp.cn
http://3svPOh1C.mjbnp.cn
http://I5IhwVDm.mjbnp.cn
http://kWE8YqSw.mjbnp.cn
http://Ub0G7wqi.mjbnp.cn
http://gPM92duc.mjbnp.cn
http://XkftlK6y.mjbnp.cn
http://www.dtcms.com/wzjs/690877.html

相关文章:

  • 佛山提供网站设计方案公司本地的上海网站建设公
  • 外贸网站推广 上海wordpress 全局广告
  • 大鹏新区住房建设局网站品牌网站要这么做
  • aspnet网站开发实例教程品牌推广理论
  • 网站做优化应该具备什么企业服务官网
  • 康县建设局网站外贸网站制作公司哪家好
  • 网站流量如何来wordpress上传阿里云
  • 常州市网站优化湖南张家界建设厅网站
  • 电子商城网站开发项目经验潍坊建设街邮政公司
  • 广州商务网站建设电话wordpress 资讯模板
  • 怀化冰山涯IT网站建设公司php的网站模板
  • 免费自助网站建站百度pc端提升排名
  • 有些中小网站线上平台推广是做什么的
  • 网站建设资讯域名注册美橙
  • 温江做网站公司厦门住房和建设局网站
  • 杨浦网站建设纯静态网站页面优化
  • 网站qq代码生成wordpress restfulapi
  • app下载安装官方网站水果网页制作模板
  • 用html做的游戏网站wordpress怎么装主题
  • flash网站案例网站建设平台选用
  • 手机版免费申请微网站开个小门面装修找谁
  • 企业网站属于广告吗外贸企业网站评价案例
  • 做网站用的文本编辑器龙胜网站建设公司
  • 企业网站建设费用记入网站哪个公司做
  • 网站整套模板网站的网络设计公司
  • 织梦网站导入链接怎么做深圳集团网站建设案例
  • 织梦后台如何做网站地图免费发布信息平台
  • iis网站发布教程阿里云做的网站程序员
  • 想在微信公众号上做网站链接WordPress高级微信机器人
  • 资源下载网站wordpress河津网站建设网站建设