【问题标题】:Icon not showing up in PopupMenuButton in FlutterFlutter 的 PopupMenuButton 中未显示图标
【发布时间】:2019-02-18 22:27:54
【问题描述】:

我正在尝试在 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();
                                      },
                                    ),
                                  ],
                                ),
                              ),
                            ],
                          ),
                        ),
                      ],
                    ),

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我在 Flutter 中遇到了类似的问题:构建一个填充有 PopupMenuItemPopupMenuButton,我打算在它前面加上一个基本的 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")),
            ),
          ],
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2020-03-07
      • 2020-04-10
      • 2021-12-03
      • 2020-11-08
      • 2020-10-26
      • 2020-10-23
      相关资源
      最近更新 更多