在这个简单的实现代码中,我添加了一些PopupMenuButton项目到AppBaractions参数中,现在我想样式化PopupMenuDividercolor,它有默认的颜色。
你可以很容易地使用Theme类,使用它你可以改变图标的颜色,文本的颜色和PopupMenuDivider的颜色。
同样,你可以很容易地在PopupMenuItem的分隔符上使用PopupMenuDivider。
appBar: AppBar(
title: Text("PopUpMenu Flutter"),
centerTitle: true,
actions: [
Theme(
data: Theme.of(context).copyWith(
dividerTheme: DividerThemeData(
color: Colors.black,
),
iconTheme: IconThemeData(color: Colors.white),
textTheme: TextTheme().apply(bodyColor: Colors.white),
),
child: PopupMenuButton<int>(
color: Colors.indigo,
//onSelected: (item) => onSelected(context, item),
itemBuilder: (context) => [
PopupMenuItem<int>(
value: 0,
child: Text('Settings'),
),
PopupMenuDivider(),
PopupMenuItem<int>(
value: 1,
child: Text('Share'),
),
PopupMenuDivider(),
PopupMenuItem<int>(
value: 2,
child: Row(
children: [
Icon(Icons.logout),
const SizedBox(width: 8),
Text('Sign Out'),
],
),
),
],
),
),
],
),
您可以使用PopupMenuItem child
并将Column
分配为
PopupMenuItem<WhyFarther>(
value: WhyFarther.harder,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Working a lot harder'),
Divider(
color: Colors.grey,
)
],
),
),
这样做:
class CustomPopupMenuDivider extends PopupMenuDivider {
final double? thickness;
final double? indent;
final double? endIndent;
final Color? color;
const CustomPopupMenuDivider({
super.height,
super.key,
this.thickness,
this.indent,
this.endIndent,
this.color,
}) : super();
@override
State<CustomPopupMenuDivider> createState() => _CustomPopupMenuDividerState();
}
class _CustomPopupMenuDividerState extends State<CustomPopupMenuDivider> {
@override
Widget build(BuildContext context) {
return Divider(
height: widget.height,
thickness: widget.thickness,
indent: widget.indent,
endIndent: widget.endIndent,
color: widget.color,
);
}
}
那么你可以用这个类来代替PopupMenuDivider