diff --git a/packages/dropdown_button2/CHANGELOG.md b/packages/dropdown_button2/CHANGELOG.md index 69dfe9d..0d4eaaa 100644 --- a/packages/dropdown_button2/CHANGELOG.md +++ b/packages/dropdown_button2/CHANGELOG.md @@ -7,6 +7,7 @@ - Implement switch expressions. - Fix memory leak in CurvedAnimation [Flutter core]. - Avoid Container objects when possible for better performance [Flutter core]. +- Add semantics to dropdown menu items [Flutter core]. ## 3.0.0-beta.21 diff --git a/packages/dropdown_button2/lib/src/dropdown_button2.dart b/packages/dropdown_button2/lib/src/dropdown_button2.dart index 4667c79..a2c562c 100644 --- a/packages/dropdown_button2/lib/src/dropdown_button2.dart +++ b/packages/dropdown_button2/lib/src/dropdown_button2.dart @@ -882,8 +882,10 @@ class _DropdownButton2State extends State> ); } + final bool childHasButtonSemantic = hintIndex != null || + (_selectedIndex != null && widget.selectedItemBuilder == null); return Semantics( - button: true, + button: !childHasButtonSemantic, child: Actions( actions: _actionMap, child: InkWell( diff --git a/packages/dropdown_button2/lib/src/dropdown_menu_item.dart b/packages/dropdown_button2/lib/src/dropdown_menu_item.dart index 1ed6ee5..83fb071 100644 --- a/packages/dropdown_button2/lib/src/dropdown_menu_item.dart +++ b/packages/dropdown_button2/lib/src/dropdown_menu_item.dart @@ -111,9 +111,12 @@ class _DropdownMenuItemContainer extends StatelessWidget { @override Widget build(BuildContext context) { - return SizedBox( - height: intrinsicHeight ? null : height, - child: Align(alignment: alignment, child: child), + return Semantics( + button: true, + child: SizedBox( + height: intrinsicHeight ? null : height, + child: Align(alignment: alignment, child: child), + ), ); } }