android底部弹出圆角矩形菜单,Flutter | 思路解析 WPopupMenu 仿微信聊天长按弹出菜单...

本文介绍了如何在Flutter中实现类似微信聊天的底部弹出圆角矩形菜单,包括自动定位和三角形方向判断。通过CustomSingleChildLayout和CustomPainter绘制,详细解析了弹出框的布局和绘制过程。
摘要由CSDN通过智能技术生成

在上一篇文章中发布了 WPopupMenu 的第一个版本,并且也遗留了两个问题:

1.弹出框下面的三角2.在最顶端的时候应向下弹出

那在这次发文之前也是解决了上述两个问题和完善了一些逻辑问题:

1.如果 child 的长度大于 menu 的长度,那么则把 menu 放在中间2.如果 child 的长度小于 menu 的长度,三角形的位置在 child 的中间

不多说,上图:

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

WPopupMenu 实现思路解析

首先,还是按照正常业务逻辑,先提需求:

1.在当前页面弹出2.样子要和微信一样3.自动确定弹出位置(上 或者 下)4.三角形自动判断是 正三角 还是 倒三角

需求差不多了,就该来实现了。

在当前页面弹出

首先迎面来的就是第一个难题,如何在当前页面弹出?

这就涉及到我前面所讲的几篇文章:

这几个控件的源码里都有一个类:PopupRoute,该类我也讲过:

PopupRoute 是一个浮在当前页面上的 Route.

看到没

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值