fix DropdownMenu
keyboard navigation when entries are filtered empty (#155252)
fixes https://github.com/flutter/flutter/issues/154532
This commit is contained in:
parent
cc7f76cf35
commit
ce2fe59bbb
@ -807,6 +807,7 @@ class _DropdownMenuState<T> extends State<DropdownMenu<T>> {
|
|||||||
} else {
|
} else {
|
||||||
filteredEntries = widget.dropdownMenuEntries;
|
filteredEntries = widget.dropdownMenuEntries;
|
||||||
}
|
}
|
||||||
|
_menuHasEnabledItem = filteredEntries.any((DropdownMenuEntry<T> entry) => entry.enabled);
|
||||||
|
|
||||||
if (_enableSearch) {
|
if (_enableSearch) {
|
||||||
if (widget.searchCallback != null) {
|
if (widget.searchCallback != null) {
|
||||||
|
@ -1315,6 +1315,28 @@ void main() {
|
|||||||
expect(tester.takeException(), isNull);
|
expect(tester.takeException(), isNull);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Regression test for https://github.com/flutter/flutter/issues/154532.
|
||||||
|
testWidgets('Searching for non matching item does not crash', (WidgetTester tester) async {
|
||||||
|
await tester.pumpWidget(MaterialApp(
|
||||||
|
home: Scaffold(
|
||||||
|
body: DropdownMenu<TestMenu>(
|
||||||
|
enableFilter: true,
|
||||||
|
requestFocusOnTap: true,
|
||||||
|
dropdownMenuEntries: menuChildren,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
// Open the menu.
|
||||||
|
await tester.tap(find.byType(DropdownMenu<TestMenu>));
|
||||||
|
await tester.pump();
|
||||||
|
await tester.enterText(find.byType(TextField).first, 'Me');
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
await tester.enterText(find.byType(TextField).first, 'Meu');
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
expect(tester.takeException(), isNull);
|
||||||
|
});
|
||||||
|
|
||||||
// Regression test for https://github.com/flutter/flutter/issues/147253.
|
// Regression test for https://github.com/flutter/flutter/issues/147253.
|
||||||
testWidgets('Default search prioritises the current highlight on desktop platforms',
|
testWidgets('Default search prioritises the current highlight on desktop platforms',
|
||||||
(WidgetTester tester) async {
|
(WidgetTester tester) async {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user