Flutter弹出菜单按钮直到选择任何弹出项目后才关闭

问题描述 投票:0回答:1

一切正常,但是在选择任何弹出项目之前,不会关闭popupmenubutton。我不明白为什么在弹出菜单之外单击后弹出菜单没有关闭,并且未调用onCanceled。请帮助我。

我已在下面提供了源代码。谢谢。

//Call from Here
    StatefulWidget> Scafold(
    bottomNavigation,
    TabBar
    body: widgets>
//under tabBar
    child: callAction(
       tooltip: "Call Button",
       child: Container(
            height: double.infinity,
            padding: EdgeInsets.all(20),
            child: Icon(Icons.call)
        ),
      ),
    )

//PopupMenuButton widget

enum CallActionType { DataCall, Sim1Call, Sim2Call}

class callAction extends StatelessWidget {
  Widget child;
  String tooltip;
  callAction({@required this.child, @required this.tooltip});

PopupMenuButton<CallActionType>(
      elevation: 8,
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(15.0)),
      onSelected: (CallActionType value) {
        setState(() {
          print(value);
        });
      },

//onCanceled didn't call

      onCanceled: () {
        print('You have not chossed anything');
      },
      tooltip: widget.tooltip,
      offset: Offset(0, 100),
      child: widget.child,
      itemBuilder: (BuildContext context) => <PopupMenuEntry<CallActionType>>[
        new PopupMenuItem<CallActionType>(
          value: CallActionType,
          child: Text('Action 1'),
        ),
        new PopupMenuItem<CallActionType>(
          value: CallActionType,
          child: Text('Action 2'),
        ),
        new PopupMenuItem<CallActionType>(
          value: CallActionType,
          child: Text('Action 3'),
        ),
      ],
    );
flutter flutter-layout
1个回答
0
投票

PopupMenu将顺利关闭,例如,请参见下面的代码:

   Widget popupMenuButton(){

return PopupMenuButton<String>(
  elevation: 50,
  padding: EdgeInsets.fromLTRB(5, 0, 0, 0),
  icon: Icon(Icons.keyboard_arrow_down, size: 30, color: Colors.black),
  itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[

    PopupMenuItem<String>(
        value: "One_Val",
        child: Text("One_Val"),
    ),
     PopupMenuItem<String>(
        value: "Two_Val",
        child: Text("Two_Val"),
    ),
     PopupMenuItem<String>(
        value: "Three_Val",
        child: Text("Three_Val"),
    )

  ],
    onSelected: (String value) {
      setState(() {
        companyName = value;
  });
},

);}

谢谢您的询问,谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.