弃用 `ButtonBar`,改用 `OverflowBar`
概述
#ButtonBar 小部件已被弃用,取而代之的是更高效的 OverflowBar 小部件。因此,ThemeData.buttonBarTheme 和 ButtonBarTheme 也已被弃用。
背景
#ButtonBar 小部件将子项排成一行,如果水平空间不足,则排成一列。OverflowBar 小部件执行相同的操作,但它不与 Material 库绑定,而是 widgets.dart 核心库的一部分。
变更说明
#- 将
ButtonBar小部件替换为OverflowBar小部件。 - 默认情况下,
ButtonBar将其子项对齐到布局的末尾,而OverflowBar将其子项对齐到开头。要将OverflowBar的子项对齐到末尾,请将OverflowBar.alignment属性设置为MainAxisAlignment.end。 ButtonBar.buttonPadding在按钮之间提供间距,并在按钮周围提供填充。将其替换为OverflowBar.spacing,它在按钮之间提供间距。将OverflowBar小部件包装在Padding小部件中,以在按钮周围提供填充。- 将
ButtonBar.overflowButtonSpacing替换为OverflowBar.overflowSpacing,它在按钮水平空间不足时,当按钮排成一列时,提供按钮之间的间距。 - 如果已指定
ThemeData.buttonBarThemeData,请将其移除。
迁移指南
#将 ButtonBar 替换为 OverflowBar,如果需要,则覆盖默认对齐方式;将 ButtonBar.buttonPadding 替换为 Padding 小部件和 OverflowBar.spacing 来处理按钮之间及周围的间距;并将 ButtonBar.overflowButtonSpacing 替换为 OverflowBar.overflowSpacing 来处理按钮水平空间不足时,当按钮排成一列时的按钮间距。
之前
dart
ButtonBar(
buttonPadding: const EdgeInsets.all(8.0),
overflowButtonSpacing: 8.0,
children: <Widget>[
TextButton(child: const Text('Button 1'), onPressed: () {}),
TextButton(child: const Text('Button 2'), onPressed: () {}),
TextButton(child: const Text('Button 3'), onPressed: () {}),
],
),之后
dart
Padding(
padding: const EdgeInsets.all(8.0),
child: OverflowBar(
alignment: MainAxisAlignment.end,
spacing: 8.0,
overflowSpacing: 8.0,
children: <Widget>[
TextButton(child: const Text('Button 1'), onPressed: () {}),
TextButton(child: const Text('Button 2'), onPressed: () {}),
TextButton(child: const Text('Button 3'), onPressed: () {}),
],
),
),如果指定了 ThemeData.buttonBarTheme,请将其移除,并使用 OverflowBar 小部件的属性来自定义 OverflowBar 小部件。
之前
dart
ThemeData(
buttonBarTheme: ButtonBarThemeData(
alignment: MainAxisAlignment.center,
),
),之后
dart
ThemeData(
// ...
),如果使用 ButtonBarTheme 小部件,请将其移除,并使用 OverflowBar 小部件的属性来自定义 OverflowBar 小部件。
之前
dart
ButtonBarTheme(
data: ButtonBarThemeData(
alignment: MainAxisAlignment.center,
),
child: ButtonBar(
children: <Widget>[
// ...
],
),
),之后
dart
OverflowBar(
alignment: MainAxisAlignment.center,
children: <Widget>[
// ...
],
),时间线
#登陆版本:3.22.0-2.0.pre
稳定版本:3.24.0
参考资料
#API 文档
相关问题
相关 PR