Flutter AppBar action项间距及末项距边框的padding值是多少
Flutter AppBar action项默认间距参数
以下数值均为AppBar未自定义actionsPadding、titleSpacing等间距属性时的默认值,区分Material设计版本:
- 相邻action项之间的水平间距:
- Material 2模式:
8.0px - Material 3模式:
8.0px
- Material 2模式:
- 最后一个action项距离AppBar右侧边框的距离:
- Material 2模式:
4.0px - Material 3模式:
16.0px
- Material 2模式:
不建议硬编码上述固定数值,因为如果项目修改了全局主题、或者后续Flutter版本迭代默认间距,硬编码的布局会再次出现错位。100%对齐原生AppBar效果的方案是直接复用框架内置的主题配置,示例代码如下:
// 自定义AppBar尾部action区域实现 LayoutBuilder( builder: (context, constraints) { final AppBarTheme appBarTheme = Theme.of(context).appBarTheme; final bool useM3 = Theme.of(context).useMaterial3; return Container( height: kToolbarHeight, alignment: Alignment.centerRight, // 直接复用原生AppBar的actions区域默认padding padding: appBarTheme.actionsPadding ?? (useM3 ? const EdgeInsets.symmetric(horizontal: 12) : const EdgeInsets.only(right: 4)), child: Row( mainAxisSize: MainAxisSize.min, children: [ // 每个action按钮用ActionIconTheme包裹,自动继承原生按钮内边距、图标大小配置 ActionIconTheme( data: appBarTheme.actionIconTheme ?? const ActionIconThemeData(), child: IconButton( onPressed: () {}, icon: const Icon(Icons.search), ), ), ActionIconTheme( data: appBarTheme.actionIconTheme ?? const ActionIconThemeData(), child: IconButton( onPressed: () {}, icon: const Icon(Icons.more_vert), ), ), ], ), ); } )用上面的写法,不管是M2/M3模式、还是全局自定义了AppBar主题,action的排布位置都会和原生AppBar完全一致,不需要手动计算间距。
内容的提问来源于stack exchange,提问作者Mahi
相关产品推荐
相关产品推荐

