Flutter PopupMenuButton:如何自定义AppBar三点菜单图标的颜色
PopupMenuButton 内置的默认三点图标为
Icons.more_vert,无单独暴露的图标颜色配置参数,颜色默认继承自当前作用域的IconTheme,可通过以下两种方式实现自定义颜色:
方案1:手动传入自定义三点图标
直接给组件传入自定义的同样式三点图标,指定目标颜色,改动最小:
PopupMenuButton( // 新增自定义图标配置 icon: Icon( Icons.more_vert, color: Colors.red, // 替换为需要的目标颜色 size: 24, // 与默认图标尺寸对齐 ), itemBuilder: (ct) { return [ PopupMenuItem( value: 'value1', child: InkWell( onTap: () => showDialog( barrierDismissible: true, context: context, builder: (context) => ReportUser( currentUser: widget.sender, seconduser: widget.second, )).then((value) => Navigator.pop(ct)), child: Container( width: 100, height: 30, child: Text( "Report", )), ), ), ]; }, )
方案2:局部IconTheme覆盖
不需要手动传入自定义图标,用IconTheme局部包裹组件,覆盖该作用域的图标颜色,原有逻辑无需改动:
IconTheme( data: IconThemeData( color: Colors.red, // 替换为需要的目标颜色 ), child: PopupMenuButton( itemBuilder: (ct) { return [ PopupMenuItem( value: 'value1', child: InkWell( onTap: () => showDialog( barrierDismissible: true, context: context, builder: (context) => ReportUser( currentUser: widget.sender, seconduser: widget.second, )).then((value) => Navigator.pop(ct)), child: Container( width: 100, height: 30, child: Text( "Report", )), ), ), ]; }, ), )
- 两种方案效果一致,可根据现有代码结构选择
- 若未设置
size参数,手动传入的图标会默认继承当前IconTheme的尺寸,不会和默认样式有差异
内容的提问来源于stack exchange,提问作者Julien leburn
相关产品推荐
相关产品推荐

