我们在上一章回中介绍了PopupMenuButton相关的内容,本章回中将介绍如何在任意位置显示PopupMenu.闲话休提,让我们一起Talk Flutter吧。
1. 概念介绍
我们在上一章回中介绍了PopupMenuButton相关的内容,它主要用在AppBar中的右侧。有看官说:能不能把它移动到其它的位置?答案是不行,该组件虽然提供了相关
的属性来移动菜单的位置,但是移动的位置有限。我们只能换作其它的思路来移动它的位置,本章回中将介绍如何在移动PopupMenu,让它显示在任意位置。
2. 使用方法
我们可以使用showMenu方法来移动PopupMenu.该方法提供了相关的参数来控制PopupMenu,详细的参数如下:
- context属性:就是BuildContext类型的变量;
- position属性:主要用来控制PopupMenu的位置,它通过一个相对位置的矩形来控制PopupMenu的位置;
- item属性:主要用来存放PopupMenu,该属性的用法和上一章回中PopupMenuButton组件的itemBuilder属性完全相同;
在给position属性赋值时比较困难,因为这个位置坐标不好调整,大家在调整时把握一个原则:以一个点的相对坐标为参考点,position中的坐标值都是相对于这个
点。我也是经过反复调试并且查看它的源代码后才总结出这个原则,下面是计算位置的源代码:
final RelativeRect position = RelativeRect.fromRect(
Rect.fromPoints(
button.localToGlobal