如何更改Popup MenuButton弹窗的背景颜色?

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

我想更改弹出菜单按钮窗口的背景颜色。我应该怎么办?我希望我能得到你的帮助。谢谢。当我改变容器的颜色时,有些角落不能改变颜色。

 new IconButton(
            icon: new Icon(
              Icons.search,
              color: Colors.white,
            ),
            onPressed: () {},
          ),
          new PopupMenuButton(
            offset: const Offset(0.0, 60.0),
            icon: new Icon(Icons.add, color: Colors.white),
            itemBuilder: (BuildContext context) => <PopupMenuItem<String>>[
                  new PopupMenuItem<String>(
                      value: '选项一的值',
                      child: new Container(
                          color: Colors.red,
                          child: new Column(
                            children: <Widget>[
                              new Row(
                                children: <Widget>[
                                  new Image.asset(defaultAvatar,
                                      width: 30.0, height: 30.0),
                                  new Text('发起群聊')
                                ],
                              ),
                            ],
                          ))),
                  new PopupMenuItem<String>(
                      value: '选项一的值',
                      child: new Container(
                          child: new Column(
                        children: <Widget>[
                          new Row(
                            children: <Widget>[
                              new Image.asset(defaultAvatar,
                                  width: 30.0, height: 30.0),
                              new Text('添加朋友')
                            ],
                          ),
                        ],
                      ))),

flutter flutter-layout
7个回答
13
投票

该背景颜色基于

Theme
,因此您可以更改
PopMenuButton
内包裹
Theme
的颜色并更改
cardColor

          Theme(
                data: Theme.of(context).copyWith(
                  cardColor: Colors.red,
                ),
                child: new PopupMenuButton(
                       ...

8
投票

有点难看,但是嘿:

PopupMenuButton<String>(
   onSelected: (selected) {},
   icon: Icon(Icons.more_vert, color: Colors.white,),
   itemBuilder: (BuildContext context) {
      ...
   },
), 

3
投票

您可以使用

PopupMenuButton( color: Colors.red, ...)
更改背景颜色,而无需将其包装在新主题中。


3
投票

默认情况下,PopupMenuButton 有色调。

surfaceTintColor = popupMenuTheme.shadowColor

所以我们还需要设置它的颜色,以使其工作。

PopupMenuButton(
  color: Colors.red,
  surfaceTintColor: Colors.red,
  child: ...
),

1
投票
Center(
      child: Theme(
        data: Theme.of(context).copyWith(
          cardColor: Colors.red,
        ),
        child: PopupMenuButton(
          child: Text("Show Popup Menu"),
          itemBuilder: (context) => [
                PopupMenuItem(
                  child: Text("InduceSmile.com"),
                ),
                PopupMenuItem(
                  child: Text("Flutter.io"),
                ),
                PopupMenuItem(
                  child: Text("Google.com"),
                ),
              ],
        ),
      ),

这工作正常。


1
投票

从Flutter 3.10开始,它的工作原理是这样的:

PopupMenuButton(
      color: Colors.red,
      child: ...
),

0
投票
{Color? color}
Type: Color?

如果提供,则用于菜单的背景颜色。

如果此属性为 null,则使用 [PopupMenuThemeData.color]。如果 [PopupMenuThemeData.color] 也为 null,则使用 Theme.of(context).cardColor。

PopupMenuButton(
  color: Colors.red,
  child: ...

),

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