我想更改弹出菜单按钮窗口的背景颜色。我应该怎么办?我希望我能得到你的帮助。谢谢。当我改变容器的颜色时,有些角落不能改变颜色。
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('添加朋友')
],
),
],
))),
该背景颜色基于
Theme
,因此您可以更改 PopMenuButton
内包裹 Theme
的颜色并更改 cardColor
。
Theme(
data: Theme.of(context).copyWith(
cardColor: Colors.red,
),
child: new PopupMenuButton(
...
有点难看,但是嘿:
PopupMenuButton<String>(
onSelected: (selected) {},
icon: Icon(Icons.more_vert, color: Colors.white,),
itemBuilder: (BuildContext context) {
...
},
),
您可以使用
PopupMenuButton( color: Colors.red, ...)
更改背景颜色,而无需将其包装在新主题中。
默认情况下,PopupMenuButton 有色调。
surfaceTintColor = popupMenuTheme.shadowColor
所以我们还需要设置它的颜色,以使其工作。
PopupMenuButton(
color: Colors.red,
surfaceTintColor: Colors.red,
child: ...
),
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"),
),
],
),
),
这工作正常。
从Flutter 3.10开始,它的工作原理是这样的:
PopupMenuButton(
color: Colors.red,
child: ...
),
{Color? color}
Type: Color?
如果提供,则用于菜单的背景颜色。
如果此属性为 null,则使用 [PopupMenuThemeData.color]。如果 [PopupMenuThemeData.color] 也为 null,则使用 Theme.of(context).cardColor。
PopupMenuButton(
color: Colors.red,
child: ...
),