弃用 `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