更新菜单的默认文本样式
摘要
#菜单使用的默认文本样式已更新为符合 Material 3 规范。
上下文
#MenuItemButton
(在MenuBar
和使用MenuAnchor
创建的菜单中使用的部件)和DropdownMenuEntry
(在DropdownMenu
中)的默认文本样式已更新为符合 Material 3 规范。
同样,DropdownMenu
的TextField
的默认文本样式也已更新为符合 Material 3 规范。
变更描述
#对于 Material 3,MenuItemButton
(在MenuBar
和使用MenuAnchor
创建的菜单中使用的部件)和DropdownMenuEntry
(在DropdownMenu
中)的默认文本样式已从TextTheme.bodyLarge
更新为TextTheme.labelLarge
。
对于 Material 3,DropdownMenu
的TextField
的默认文本样式已从TextTheme.labelLarge
更新为TextTheme.bodyLarge
。
迁移指南
#Material 3 的MenuItemButton
使用TextTheme.labelLarge
作为默认文本样式。要使用以前的默认文本样式,请在MenuItemButton.style
或MenuButtonThemeData.style
属性中设置TextTheme.bodyLarge
文本样式。
迁移前代码
MenuItemButton(
child: Text(MenuEntry.about.label),
onPressed: () => _activate(MenuEntry.about),
),
menuButtonTheme: MenuButtonThemeData(
style: MenuItemButton.styleFrom(
/// ...
),
),
迁移后代码
MenuItemButton(
style: MenuItemButton.styleFrom(
textStyle: Theme.of(context).textTheme.bodyLarge,
),
child: Text(MenuEntry.about.label),
onPressed: () => _activate(MenuEntry.about),
),
menuButtonTheme: MenuButtonThemeData(
style: MenuItemButton.styleFrom(
textStyle: Theme.of(context).textTheme.bodyLarge,
),
),
Material 3 的DropdownMenu
的TextField
使用TextTheme.bodyLarge
作为默认文本样式。要使用以前的默认文本样式,请在DropdownMenu.textStyle
或DropdownMenuThemeData.textStyle
属性中设置TextTheme.labelLarge
文本样式。
迁移前代码
DropdownMenu<ColorLabel>(
initialSelection: ColorLabel.green,
controller: colorController,
label: const Text('Color'),
dropdownMenuEntries: colorEntries,
onSelected: (ColorLabel? color) {
setState(() {
selectedColor = color;
});
},
),
dropdownMenuTheme: DropdownMenuThemeData(
/// ...
),
迁移后代码
DropdownMenu<ColorLabel>(
textStyle: Theme.of(context).textTheme.labelLarge,
initialSelection: ColorLabel.green,
controller: colorController,
label: const Text('Color'),
dropdownMenuEntries: colorEntries,
onSelected: (ColorLabel? color) {
setState(() {
selectedColor = color;
});
},
),
dropdownMenuTheme: DropdownMenuThemeData(
textStyle: TextStyle(
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
),
),
Material 3 的DropdownMenu
的DropdownMenuEntry
使用TextTheme.labelLarge
作为默认文本样式。要使用以前的默认文本样式,请在DropdownMenuEntry.style
或MenuButtonThemeData.style
属性中设置TextTheme.bodyLarge
文本样式。
迁移前代码
DropdownMenuEntry<ColorLabel>(
value: color,
label: color.label,
),
menuButtonTheme: MenuButtonThemeData(
style: MenuItemButton.styleFrom(
/// ...
),
),
迁移后代码
DropdownMenuEntry<ColorLabel>(
style: MenuItemButton.styleFrom(
textStyle: Theme.of(context).textTheme.bodyLarge,
),
value: color,
label: color.label,
),
menuButtonTheme: MenuButtonThemeData(
style: MenuItemButton.styleFrom(
textStyle: Theme.of(context).textTheme.bodyLarge,
),
),
时间线
#包含于版本:3.14.0-11.0.pre
稳定版发布:3.16
参考
#API 文档
MenuBar
MenuAnchor
MenuItemButton
MenuButtonTheme
DropdownMenu
DropdownMenuEntry
DropdownMenuTheme
TextTheme
相关 PR
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-04-04。 查看源代码 或 报告问题.