Flutter并没有Qt一样提供菜单栏多级菜单,想要实现该功能就需要自定义,已知点击按钮可以通过Overlay弹出菜单悬浮框,考虑可不可以在ovelay中在嵌入一个Overlay实现多级菜单,实践证明该方法可行,
具体实现为先定义两个 OverlayEntry作为要显示悬浮窗
LayerLink fixLink = new LayerLink();
OverlayEntry? fixOverlay;
LayerLink moveMailLink = new LayerLink(); //移动邮件选择
OverlayEntry? moveMailOverlay;
之后创建初级菜单
OverlayEntry creatFixOverlay() {
OverlayEntry fixOverlay = new OverlayEntry(builder: (context) {
return Positioned(
width: 200,
child: new CompositedTransformFollower(
link: fixLink,
offset: Offset(0, 30),
child: new Material(
child: Container(
decoration: BoxDecoration(
border: Border.all(width: 0.2, color: Colors.black45)),