Flutter中的PopupMenuButton中未显示图标

时间:2019-02-18 22:27:55

标签: flutter

我正在尝试在Flutter中创建一个PopupMenu,它位于图标下方。但是,该图标未显示。我正在使用本期建议的代码:Is it possible to use a DropDownButton within an IconButton in Flutter?,但尝试使其适应我的小部件树。

我已附上我尝试过的代码的示例。

@override
  Widget build(BuildContext context) {
    return new Container(
      height: MediaQuery.of(context).size.height,
      child: SingleChildScrollView(
        child: new Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisSize: MainAxisSize.max,
          children: <Widget>[
            new Container(
              height: 220.0,
              width: MediaQuery.of(context).size.width,
              child: new GestureDetector(
                onTap: () {
                  FocusScope.of(context).requestFocus(new FocusNode());
                },
                child: Column(
                  children: <Widget>[
                    SizedBox(height: 40.0),
                    Row(
                      children: <Widget>[
                        Expanded(
                          child: Stack(
                            children: [
                              Center(
                                child: Text(
                                  'Profile',
                                  textAlign: TextAlign.center,
                                  style: TextStyle(
                                    fontFamily: 'Lato',
                                    color: Colors.white,
                                    fontSize: 50.0,
                                    fontWeight: FontWeight.w700,
                                  ),
                                ),
                              ),
                              Positioned(
                                right: 8,
                                child: Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: <Widget>[
                                    Padding(padding: EdgeInsets.only(top: 400)),
                                    PopupMenuButton<String>(
                                      icon: Icon(
                                        Icons.settings,
                                        color: Colors.white,
                                        size: 30.0,
                                      ),
                                      onSelected: choiceAction,
                                      itemBuilder: (BuildContext context) {
                                        return Constants.choices.map((String choice) {
                                          return PopupMenuItem<String>(
                                            value: choice,
                                            child: Text(choice),
                                          );
                                        }).toList();
                                      },
                                    ),
                                  ],
                                ),
                              ),
                            ],
                          ),
                        ),
                      ],
                    ),

1 个答案:

答案 0 :(得分:0)

在Flutter中,我也遇到了类似的问题:构建一个PopupMenuButton并填充PopupMenuItem,而我打算在其前面加上基本的Icon

但是,由于某些未知原因,未显示该图标。我通过使用受ListTile源代码启发的CheckedPopupMenuItem构建器解决了这个问题。

enum MyMenuEntries { previous, next }

class MyMenu extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return PopupMenuButton<MyMenuEntries>(
      onSelected: (MyMenuEntries entry) {},
      itemBuilder: (BuildContext context) => [
        PopupMenuItem<MyMenuEntries>(
          value: MyMenuEntries.previous,
          child: ListTile(leading: Icon(Icons.arrow_back), title: Text("Previous")),
        ),
        PopupMenuItem<MyMenuEntries>(
          value: MyMenuEntries.next,
          child: ListTile(leading: Icon(Icons.arrow_forward), title: Text("Next")),
        ),
      ],
    );
  }
}