[英]Flutter how to dismiss showMenu when mouse exit the PopupMenuItem
[英]How to change the background color of PopupMenuItem under the showMenu?
我不使用PopupMenuButton。
因为就我而言,showMenu会更合适。
onLongPress: () => _onRoomLongPressed(context, _tappedPosition, model, room),
void _onRoomLongPressed(BuildContext context, Offset tappedPosition,
RoomsModel model, Room room) {
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
showMenu(
context: context,
position: RelativeRect.fromRect(
tappedPosition & Size.zero, Offset.zero & overlay.size),
items: [
PopupMenuItem(
value: 'delete',
child: Text('delete'),
),
],
).then((String value) {
switch (value) {
case 'delete':
model.remove(room);
break;
}
});
}
不要更改MaterialApp()
的主题。
我希望PopupMenuItem
的背景色是白色, Text
色是黑色。
您需要将可打开菜单的窗口小部件包装在Builder
并将Theme
作为此Builder
的父级。 这是使您前进的代码。
@override
Widget build(BuildContext context) {
return Theme(
data: Theme.of(context).copyWith(
cardColor: Colors.white,
textTheme: Theme.of(context).textTheme.apply(bodyColor: Colors.black),
),
child: Builder(
builder: (context) {
return RaisedButton(
child: Text("Show menu"),
onPressed: () {
showMenu(
context: context,
position: RelativeRect.fromLTRB(0, 100, 0, 0),
items: [
PopupMenuItem(child: Text("Item 0"), value: 0),
PopupMenuItem(child: Text("Item 1"), value: 1),
PopupMenuItem(child: Text("Item 2"), value: 2),
],
);
},
);
},
),
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.