@@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
6
6
import 'package:flutter/gestures.dart' show DragStartBehavior;
7
7
import 'package:flutter/material.dart' ;
8
8
import 'package:flutter/rendering.dart' ;
9
+ import 'package:flutter/services.dart' ;
9
10
import 'package:flutter_test/flutter_test.dart' ;
10
11
11
12
import '../widgets/semantics_tester.dart' ;
@@ -37,17 +38,17 @@ void main() {
37
38
38
39
scaffoldState.openDrawer ();
39
40
await tester.pumpAndSettle ();
40
- expect (true , isDrawerOpen );
41
+ expect (isDrawerOpen, true );
41
42
scaffoldState.openEndDrawer ();
42
43
await tester.pumpAndSettle ();
43
- expect (false , isDrawerOpen );
44
+ expect (isDrawerOpen, false );
44
45
45
46
scaffoldState.openEndDrawer ();
46
47
await tester.pumpAndSettle ();
47
- expect (true , isEndDrawerOpen );
48
+ expect (isEndDrawerOpen, true );
48
49
scaffoldState.openDrawer ();
49
50
await tester.pumpAndSettle ();
50
- expect (false , isEndDrawerOpen );
51
+ expect (isEndDrawerOpen, false );
51
52
});
52
53
53
54
testWidgets ('Scaffold drawer callback test - only call when changed' , (WidgetTester tester) async {
@@ -74,14 +75,14 @@ void main() {
74
75
));
75
76
76
77
await tester.flingFrom (Offset .zero, const Offset (10.0 , 0.0 ), 10.0 );
77
- expect (false , onDrawerChangedCalled );
78
+ expect (onDrawerChangedCalled, false );
78
79
79
80
await tester.pumpAndSettle ();
80
81
81
82
final double width = tester.getSize (find.byType (MaterialApp )).width;
82
83
await tester.flingFrom (Offset (width - 1 , 0.0 ), const Offset (- 10.0 , 0.0 ), 10.0 );
83
84
await tester.pumpAndSettle ();
84
- expect (false , onEndDrawerChangedCalled );
85
+ expect (onEndDrawerChangedCalled, false );
85
86
});
86
87
87
88
testWidgets ('Scaffold control test' , (WidgetTester tester) async {
@@ -1572,29 +1573,29 @@ void main() {
1572
1573
1573
1574
await tester.tap (drawerOpenButton);
1574
1575
await tester.pumpAndSettle ();
1575
- expect (true , scaffoldState.isDrawerOpen);
1576
+ expect (scaffoldState.isDrawerOpen, true );
1576
1577
await tester.tap (endDrawerOpenButton, warnIfMissed: false ); // hits the modal barrier
1577
1578
await tester.pumpAndSettle ();
1578
- expect (false , scaffoldState.isDrawerOpen);
1579
+ expect (scaffoldState.isDrawerOpen, false );
1579
1580
1580
1581
await tester.tap (endDrawerOpenButton);
1581
1582
await tester.pumpAndSettle ();
1582
- expect (true , scaffoldState.isEndDrawerOpen);
1583
+ expect (scaffoldState.isEndDrawerOpen, true );
1583
1584
await tester.tap (drawerOpenButton, warnIfMissed: false ); // hits the modal barrier
1584
1585
await tester.pumpAndSettle ();
1585
- expect (false , scaffoldState.isEndDrawerOpen);
1586
+ expect (scaffoldState.isEndDrawerOpen, false );
1586
1587
1587
1588
scaffoldState.openDrawer ();
1588
- expect (true , scaffoldState.isDrawerOpen);
1589
+ expect (scaffoldState.isDrawerOpen, true );
1589
1590
await tester.tap (endDrawerOpenButton, warnIfMissed: false ); // hits the modal barrier
1590
1591
await tester.pumpAndSettle ();
1591
- expect (false , scaffoldState.isDrawerOpen);
1592
+ expect (scaffoldState.isDrawerOpen, false );
1592
1593
1593
1594
scaffoldState.openEndDrawer ();
1594
- expect (true , scaffoldState.isEndDrawerOpen);
1595
+ expect (scaffoldState.isEndDrawerOpen, true );
1595
1596
1596
1597
scaffoldState.openDrawer ();
1597
- expect (true , scaffoldState.isDrawerOpen);
1598
+ expect (scaffoldState.isDrawerOpen, true );
1598
1599
});
1599
1600
1600
1601
testWidgets ('Dual Drawer Opening' , (WidgetTester tester) async {
@@ -2405,6 +2406,8 @@ void main() {
2405
2406
' MediaQuery\n '
2406
2407
' LayoutId-[<_ScaffoldSlot.body>]\n '
2407
2408
' CustomMultiChildLayout\n '
2409
+ ' _ActionsMarker\n '
2410
+ ' Actions\n '
2408
2411
' AnimatedBuilder\n '
2409
2412
' DefaultTextStyle\n '
2410
2413
' AnimatedDefaultTextStyle\n '
@@ -2497,6 +2500,54 @@ void main() {
2497
2500
await tester.pumpAndSettle ();
2498
2501
expect (find.text (snackBarContent), findsNothing);
2499
2502
});
2503
+
2504
+ testWidgets ('Drawer can be dismissed with escape keyboard shortcut' , (WidgetTester tester) async {
2505
+ // Regression test for https://github.com/flutter/flutter/issues/106131
2506
+ bool isDrawerOpen = false ;
2507
+ bool isEndDrawerOpen = false ;
2508
+
2509
+ await tester.pumpWidget (MaterialApp (
2510
+ home: Scaffold (
2511
+ drawer: Container (
2512
+ color: Colors .blue,
2513
+ ),
2514
+ onDrawerChanged: (bool isOpen) {
2515
+ isDrawerOpen = isOpen;
2516
+ },
2517
+ endDrawer: Container (
2518
+ color: Colors .green,
2519
+ ),
2520
+ onEndDrawerChanged: (bool isOpen) {
2521
+ isEndDrawerOpen = isOpen;
2522
+ },
2523
+ body: Container (),
2524
+ ),
2525
+ ));
2526
+
2527
+ final ScaffoldState scaffoldState = tester.state (find.byType (Scaffold ));
2528
+
2529
+ scaffoldState.openDrawer ();
2530
+ await tester.pumpAndSettle ();
2531
+ expect (isDrawerOpen, true );
2532
+ expect (isEndDrawerOpen, false );
2533
+
2534
+ // Try to dismiss the drawer with the shortcut key
2535
+ await tester.sendKeyEvent (LogicalKeyboardKey .escape);
2536
+ await tester.pumpAndSettle ();
2537
+ expect (isDrawerOpen, false );
2538
+ expect (isEndDrawerOpen, false );
2539
+
2540
+ scaffoldState.openEndDrawer ();
2541
+ await tester.pumpAndSettle ();
2542
+ expect (isDrawerOpen, false );
2543
+ expect (isEndDrawerOpen, true );
2544
+
2545
+ // Try to dismiss the drawer with the shortcut key
2546
+ await tester.sendKeyEvent (LogicalKeyboardKey .escape);
2547
+ await tester.pumpAndSettle ();
2548
+ expect (isDrawerOpen, false );
2549
+ expect (isEndDrawerOpen, false );
2550
+ });
2500
2551
}
2501
2552
2502
2553
class _GeometryListener extends StatefulWidget {
0 commit comments