diff --git a/packages/flutter/lib/src/cupertino/app.dart b/packages/flutter/lib/src/cupertino/app.dart index fc13d4e99ae..449eedb3405 100644 --- a/packages/flutter/lib/src/cupertino/app.dart +++ b/packages/flutter/lib/src/cupertino/app.dart @@ -535,12 +535,12 @@ class _CupertinoAppState extends State { Widget _exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { return _CupertinoInspectorButton.filled( onPressed: onPressed, - semanticLabel: semanticLabel, + semanticsLabel: semanticsLabel, icon: CupertinoIcons.xmark, buttonKey: key, ); @@ -549,12 +549,12 @@ class _CupertinoAppState extends State { Widget _moveExitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, bool isLeftAligned = true, }) { return _CupertinoInspectorButton.iconOnly( onPressed: onPressed, - semanticLabel: semanticLabel, + semanticsLabel: semanticsLabel, icon: isLeftAligned ? CupertinoIcons.arrow_right : CupertinoIcons.arrow_left, ); } @@ -562,12 +562,12 @@ class _CupertinoAppState extends State { Widget _tapBehaviorButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required bool selectionOnTapEnabled, }) { return _CupertinoInspectorButton.toggle( onPressed: onPressed, - semanticLabel: semanticLabel, + semanticsLabel: semanticsLabel, // This icon is also used for the Material-styled button and for DevTools. // It should be updated in all 3 places if changed. icon: CupertinoIcons.cursor_rays, @@ -685,21 +685,21 @@ class _CupertinoAppState extends State { class _CupertinoInspectorButton extends InspectorButton { const _CupertinoInspectorButton.filled({ required super.onPressed, - required super.semanticLabel, + required super.semanticsLabel, required super.icon, super.buttonKey, }) : super.filled(); const _CupertinoInspectorButton.toggle({ required super.onPressed, - required super.semanticLabel, + required super.semanticsLabel, required super.icon, super.toggledOn, }) : super.toggle(); const _CupertinoInspectorButton.iconOnly({ required super.onPressed, - required super.semanticLabel, + required super.semanticsLabel, required super.icon, }) : super.iconOnly(); @@ -707,7 +707,7 @@ class _CupertinoInspectorButton extends InspectorButton { Widget build(BuildContext context) { final Icon buttonIcon = Icon( icon, - semanticLabel: semanticLabel, + semanticLabel: semanticsLabel, size: iconSizeForVariant, color: foregroundColor(context), ); diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart index d2083c03539..e40ccd51e79 100644 --- a/packages/flutter/lib/src/material/app.dart +++ b/packages/flutter/lib/src/material/app.dart @@ -29,7 +29,6 @@ import 'page.dart'; import 'scaffold.dart' show ScaffoldMessenger, ScaffoldMessengerState; import 'scrollbar.dart'; import 'theme.dart'; -import 'theme_data.dart'; import 'tooltip.dart'; // Examples can assume: @@ -936,12 +935,12 @@ class _MaterialAppState extends State { Widget _exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { return _MaterialInspectorButton.filled( onPressed: onPressed, - semanticLabel: semanticLabel, + semanticsLabel: semanticsLabel, icon: Icons.close, isDarkTheme: _isDarkTheme(context), buttonKey: key, @@ -951,12 +950,12 @@ class _MaterialAppState extends State { Widget _moveExitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, bool isLeftAligned = true, }) { return _MaterialInspectorButton.iconOnly( onPressed: onPressed, - semanticLabel: semanticLabel, + semanticsLabel: semanticsLabel, icon: isLeftAligned ? Icons.arrow_right : Icons.arrow_left, isDarkTheme: _isDarkTheme(context), ); @@ -965,12 +964,12 @@ class _MaterialAppState extends State { Widget _tapBehaviorButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required bool selectionOnTapEnabled, }) { return _MaterialInspectorButton.toggle( onPressed: onPressed, - semanticLabel: semanticLabel, + semanticsLabel: semanticsLabel, // This icon is also used for the Cupertino-styled button and for DevTools. // It should be updated in all 3 places if changed. icon: CupertinoIcons.cursor_rays, @@ -1172,7 +1171,7 @@ class _MaterialAppState extends State { class _MaterialInspectorButton extends InspectorButton { const _MaterialInspectorButton.filled({ required super.onPressed, - required super.semanticLabel, + required super.semanticsLabel, required super.icon, required this.isDarkTheme, super.buttonKey, @@ -1180,7 +1179,7 @@ class _MaterialInspectorButton extends InspectorButton { const _MaterialInspectorButton.toggle({ required super.onPressed, - required super.semanticLabel, + required super.semanticsLabel, required super.icon, required this.isDarkTheme, super.toggledOn, @@ -1188,7 +1187,7 @@ class _MaterialInspectorButton extends InspectorButton { const _MaterialInspectorButton.iconOnly({ required super.onPressed, - required super.semanticLabel, + required super.semanticsLabel, required super.icon, required this.isDarkTheme, }) : super.iconOnly(); @@ -1210,7 +1209,7 @@ class _MaterialInspectorButton extends InspectorButton { padding: _buttonPadding, constraints: _buttonConstraints, style: _selectionButtonsIconStyle(context), - icon: Icon(icon, semanticLabel: semanticLabel), + icon: Icon(icon, semanticLabel: semanticsLabel), ); } @@ -1221,14 +1220,21 @@ class _MaterialInspectorButton extends InspectorButton { return IconButton.styleFrom( foregroundColor: foreground, backgroundColor: background, - side: - variant == InspectorButtonVariant.toggle && !toggledOn! - ? BorderSide(color: foreground) - : null, + side: _borderSide(color: foreground), tapTargetSize: MaterialTapTargetSize.padded, ); } + BorderSide? _borderSide({required Color color}) { + switch (variant) { + case InspectorButtonVariant.filled: + case InspectorButtonVariant.iconOnly: + return null; + case InspectorButtonVariant.toggle: + return toggledOn == false ? BorderSide(color: color) : null; + } + } + @override Color foregroundColor(BuildContext context) { final Color primaryColor = _primaryColor(context); diff --git a/packages/flutter/lib/src/material/button_theme.dart b/packages/flutter/lib/src/material/button_theme.dart index d0914c16ac2..34ca24dfbdc 100644 --- a/packages/flutter/lib/src/material/button_theme.dart +++ b/packages/flutter/lib/src/material/button_theme.dart @@ -25,7 +25,6 @@ import 'colors.dart'; import 'constants.dart'; import 'material_button.dart'; import 'theme.dart'; -import 'theme_data.dart' show MaterialTapTargetSize; // Examples can assume: // late BuildContext context; diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart index 886e303383d..774038f5bfe 100644 --- a/packages/flutter/lib/src/material/dialog.dart +++ b/packages/flutter/lib/src/material/dialog.dart @@ -23,7 +23,6 @@ import 'material.dart'; import 'material_localizations.dart'; import 'text_theme.dart'; import 'theme.dart'; -import 'theme_data.dart'; // Examples can assume: // enum Department { treasury, state } diff --git a/packages/flutter/lib/src/material/floating_action_button.dart b/packages/flutter/lib/src/material/floating_action_button.dart index 12727fd03eb..fe7700bc71b 100644 --- a/packages/flutter/lib/src/material/floating_action_button.dart +++ b/packages/flutter/lib/src/material/floating_action_button.dart @@ -20,7 +20,6 @@ import 'material_state.dart'; import 'scaffold.dart'; import 'text_theme.dart'; import 'theme.dart'; -import 'theme_data.dart'; import 'tooltip.dart'; class _DefaultHeroTag { diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart index 93455a2dec5..d99c7e106fa 100644 --- a/packages/flutter/lib/src/material/popup_menu.dart +++ b/packages/flutter/lib/src/material/popup_menu.dart @@ -30,7 +30,6 @@ import 'material_state.dart'; import 'popup_menu_theme.dart'; import 'text_theme.dart'; import 'theme.dart'; -import 'theme_data.dart'; import 'tooltip.dart'; // Examples can assume: diff --git a/packages/flutter/lib/src/material/search_anchor.dart b/packages/flutter/lib/src/material/search_anchor.dart index ed0a4aa7852..7d212536625 100644 --- a/packages/flutter/lib/src/material/search_anchor.dart +++ b/packages/flutter/lib/src/material/search_anchor.dart @@ -34,7 +34,6 @@ import 'search_view_theme.dart'; import 'text_field.dart'; import 'text_theme.dart'; import 'theme.dart'; -import 'theme_data.dart'; const int _kOpenViewMilliseconds = 600; const Duration _kOpenViewDuration = Duration(milliseconds: _kOpenViewMilliseconds); diff --git a/packages/flutter/lib/src/material/switch_theme.dart b/packages/flutter/lib/src/material/switch_theme.dart index c1990b37e2a..6762f6cfa67 100644 --- a/packages/flutter/lib/src/material/switch_theme.dart +++ b/packages/flutter/lib/src/material/switch_theme.dart @@ -13,7 +13,6 @@ import 'package:flutter/widgets.dart'; import 'material_state.dart'; import 'theme.dart'; -import 'theme_data.dart'; // Examples can assume: // late BuildContext context; diff --git a/packages/flutter/lib/src/material/theme.dart b/packages/flutter/lib/src/material/theme.dart index 436a4dc133d..50009424a67 100644 --- a/packages/flutter/lib/src/material/theme.dart +++ b/packages/flutter/lib/src/material/theme.dart @@ -14,7 +14,7 @@ import 'material_localizations.dart'; import 'theme_data.dart'; import 'typography.dart'; -export 'theme_data.dart' show Brightness, ThemeData; +export 'theme_data.dart' show Brightness, MaterialTapTargetSize, ThemeData; /// The duration over which theme changes animate by default. const Duration kThemeAnimationDuration = Duration(milliseconds: 200); diff --git a/packages/flutter/lib/src/material/time_picker.dart b/packages/flutter/lib/src/material/time_picker.dart index af9560db55e..5d8eed841e2 100644 --- a/packages/flutter/lib/src/material/time_picker.dart +++ b/packages/flutter/lib/src/material/time_picker.dart @@ -33,7 +33,6 @@ import 'text_button.dart'; import 'text_form_field.dart'; import 'text_theme.dart'; import 'theme.dart'; -import 'theme_data.dart'; import 'time.dart'; import 'time_picker_theme.dart'; diff --git a/packages/flutter/lib/src/widgets/widget_inspector.dart b/packages/flutter/lib/src/widgets/widget_inspector.dart index 0e924d8cdc4..c8415db021f 100644 --- a/packages/flutter/lib/src/widgets/widget_inspector.dart +++ b/packages/flutter/lib/src/widgets/widget_inspector.dart @@ -44,7 +44,7 @@ typedef ExitWidgetSelectionButtonBuilder = Widget Function( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }); @@ -54,7 +54,7 @@ typedef MoveExitWidgetSelectionButtonBuilder = Widget Function( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, bool isLeftAligned, }); @@ -64,7 +64,7 @@ typedef TapBehaviorButtonBuilder = Widget Function( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required bool selectionOnTapEnabled, }); @@ -3054,7 +3054,7 @@ abstract class InspectorButton extends StatelessWidget { const InspectorButton({ super.key, required this.onPressed, - required this.semanticLabel, + required this.semanticsLabel, required this.icon, this.buttonKey, required this.variant, @@ -3067,7 +3067,7 @@ abstract class InspectorButton extends StatelessWidget { const InspectorButton.filled({ super.key, required this.onPressed, - required this.semanticLabel, + required this.semanticsLabel, required this.icon, this.buttonKey, }) : variant = InspectorButtonVariant.filled, @@ -3080,7 +3080,7 @@ abstract class InspectorButton extends StatelessWidget { const InspectorButton.toggle({ super.key, required this.onPressed, - required this.semanticLabel, + required this.semanticsLabel, required this.icon, bool this.toggledOn = true, }) : buttonKey = null, @@ -3092,7 +3092,7 @@ abstract class InspectorButton extends StatelessWidget { const InspectorButton.iconOnly({ super.key, required this.onPressed, - required this.semanticLabel, + required this.semanticsLabel, required this.icon, }) : buttonKey = null, variant = InspectorButtonVariant.iconOnly, @@ -3102,7 +3102,7 @@ abstract class InspectorButton extends StatelessWidget { final VoidCallback onPressed; /// The semantic label for the button, used for accessibility. - final String semanticLabel; + final String semanticsLabel; /// The icon to display within the button. final IconData icon; @@ -3131,8 +3131,15 @@ abstract class InspectorButton extends StatelessWidget { /// /// Returns [buttonSize] if the variant is [InspectorButtonVariant.iconOnly], /// otherwise returns [buttonIconSize]. - double get iconSizeForVariant => - variant == InspectorButtonVariant.iconOnly ? buttonSize : buttonIconSize; + double get iconSizeForVariant { + switch (variant) { + case InspectorButtonVariant.iconOnly: + return buttonSize; + case InspectorButtonVariant.filled: + case InspectorButtonVariant.toggle: + return buttonIconSize; + } + } /// Provides the appropriate foreground color for the button's icon. Color foregroundColor(BuildContext context); @@ -3656,7 +3663,7 @@ class _WidgetInspectorButtonGroupState extends State<_WidgetInspectorButtonGroup _changeButtonGroupAlignment(); _onTooltipHidden(); }, - semanticLabel: buttonLabel, + semanticsLabel: buttonLabel, isLeftAligned: _leftAligned, ), onTooltipVisible: () { @@ -3672,7 +3679,7 @@ class _WidgetInspectorButtonGroupState extends State<_WidgetInspectorButtonGroup button: widget.exitWidgetSelectionButtonBuilder( context, onPressed: _exitWidgetSelectionMode, - semanticLabel: buttonLabel, + semanticsLabel: buttonLabel, key: _exitWidgetSelectionButtonKey, ), onTooltipVisible: () { @@ -3692,7 +3699,7 @@ class _WidgetInspectorButtonGroupState extends State<_WidgetInspectorButtonGroup button: buttonBuilder( context, onPressed: _changeSelectionOnTapMode, - semanticLabel: 'Change widget selection mode for taps', + semanticsLabel: 'Change widget selection mode for taps', selectionOnTapEnabled: _selectionOnTapEnabled.value, ), onTooltipVisible: _changeSelectionOnTapTooltip, diff --git a/packages/flutter/test/widgets/widget_inspector_test.dart b/packages/flutter/test/widgets/widget_inspector_test.dart index 92b41ce29e5..252360bfa5f 100644 --- a/packages/flutter/test/widgets/widget_inspector_test.dart +++ b/packages/flutter/test/widgets/widget_inspector_test.dart @@ -375,7 +375,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { exitWidgetSelectionButtonKey = key; @@ -553,7 +553,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { exitWidgetSelectionButtonKey = key; @@ -807,7 +807,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { return ( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { return Material(child: ElevatedButton(onPressed: onPressed, key: key, child: null)); @@ -898,7 +898,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { return Material(child: ElevatedButton(onPressed: onPressed, key: key, child: null)); @@ -960,7 +960,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { return Material( @@ -975,7 +975,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget moveWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, bool isLeftAligned = true, }) { return Material( @@ -1041,7 +1041,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget exitWidgetSelectionButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required GlobalKey key, }) { return Material(child: ElevatedButton(onPressed: onPressed, key: key, child: null)); @@ -1050,7 +1050,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { Widget tapBehaviorButtonBuilder( BuildContext context, { required VoidCallback onPressed, - required String semanticLabel, + required String semanticsLabel, required bool selectionOnTapEnabled, }) { return Material(