Flutter弹出菜单PopupMenuButton使用笔记

910 阅读1分钟
//枚举声明菜弹列表
enum RegGuest { NewResv, NewCheckIn }
//创建PopupMenuButton
PopupMenuButton(
  // icon: Icon(Icons.menu),
  padding: EdgeInsets.zero,
  //菜单偏移位置
  offset: Offset(10,30),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Icon(Icons.menu),
      //addHorizontalSpace封的SizedBox可以无视
      addHorizontalSpace(8),
      Text("新客人"),
    ],
  ),
  //菜单点击事件
  onSelected: (value) {
    switch (value) {
      case RegGuest.NewResv:
        {
          controller.addOn('R');
        }
        break;
      case RegGuest.NewCheckIn:
        {
          controller.addOn('I');
        }
        break;
    }
  },
  itemBuilder: (BuildContext context) {
    return <PopupMenuEntry<RegGuest>>[
      const PopupMenuItem<RegGuest>(
        //菜单项
        value: RegGuest.NewResv,
        child: Center(child: Text('预订')),
      ),
      const PopupMenuItem<RegGuest>(
        value: RegGuest.NewCheckIn,
        child: Center(child: Text('在住')),
      ),
    ];
  },
),