@@ -688,6 +688,57 @@ void main() {
688
688
);
689
689
});
690
690
691
+ testWidgets ('Drawer clip behavior' , (WidgetTester tester) async {
692
+ await tester.pumpWidget (
693
+ MaterialApp (
694
+ theme: ThemeData (useMaterial3: true ),
695
+ home: const Scaffold (
696
+ drawer: Drawer (),
697
+ ),
698
+ ),
699
+ );
700
+
701
+ final Finder drawerMaterial = find.descendant (
702
+ of: find.byType (Drawer ),
703
+ matching: find.byType (Material ),
704
+ );
705
+
706
+ final ScaffoldState state = tester.firstState (find.byType (Scaffold ));
707
+
708
+ // Open the drawer.
709
+ state.openDrawer ();
710
+ await tester.pump ();
711
+ await tester.pump (const Duration (seconds: 1 ));
712
+
713
+ // Test default clip behavior.
714
+ Material material = tester.widget <Material >(drawerMaterial);
715
+ expect (material.clipBehavior, Clip .hardEdge);
716
+
717
+ state.closeDrawer ();
718
+ await tester.pumpAndSettle ();
719
+
720
+ // Provide a custom clip behavior.
721
+ await tester.pumpWidget (
722
+ MaterialApp (
723
+ theme: ThemeData (useMaterial3: true ),
724
+ home: const Scaffold (
725
+ drawer: Drawer (
726
+ clipBehavior: Clip .antiAlias,
727
+ ),
728
+ ),
729
+ ),
730
+ );
731
+
732
+ // Open the drawer again.
733
+ state.openDrawer ();
734
+ await tester.pump ();
735
+ await tester.pump (const Duration (seconds: 1 ));
736
+
737
+ // Clip behavior is now updated.
738
+ material = tester.widget <Material >(drawerMaterial);
739
+ expect (material.clipBehavior, Clip .antiAlias);
740
+ });
741
+
691
742
group ('Material 2' , () {
692
743
// Tests that are only relevant for Material 2. Once ThemeData.useMaterial3
693
744
// is turned on by default, these tests can be removed.
@@ -732,5 +783,57 @@ void main() {
732
783
material = tester.widget <Material >(drawerMaterial);
733
784
expect (material.shape, null );
734
785
});
786
+
787
+ testWidgets ('Drawer clip behavior' , (WidgetTester tester) async {
788
+ await tester.pumpWidget (
789
+ MaterialApp (
790
+ theme: ThemeData (useMaterial3: false ),
791
+ home: const Scaffold (
792
+ drawer: Drawer (),
793
+ ),
794
+ ),
795
+ );
796
+
797
+ final Finder drawerMaterial = find.descendant (
798
+ of: find.byType (Drawer ),
799
+ matching: find.byType (Material ),
800
+ );
801
+
802
+ final ScaffoldState state = tester.firstState (find.byType (Scaffold ));
803
+
804
+ // Open the drawer.
805
+ state.openDrawer ();
806
+ await tester.pump ();
807
+ await tester.pump (const Duration (seconds: 1 ));
808
+
809
+ // Test default clip behavior.
810
+ Material material = tester.widget <Material >(drawerMaterial);
811
+ expect (material.clipBehavior, Clip .none);
812
+
813
+ state.closeDrawer ();
814
+ await tester.pumpAndSettle ();
815
+
816
+ // Provide a shape and custom clip behavior.
817
+ await tester.pumpWidget (
818
+ MaterialApp (
819
+ theme: ThemeData (useMaterial3: false ),
820
+ home: const Scaffold (
821
+ drawer: Drawer (
822
+ clipBehavior: Clip .hardEdge,
823
+ shape: RoundedRectangleBorder (),
824
+ ),
825
+ ),
826
+ ),
827
+ );
828
+
829
+ // Open the drawer again.
830
+ state.openDrawer ();
831
+ await tester.pump ();
832
+ await tester.pump (const Duration (seconds: 1 ));
833
+
834
+ // Clip behavior is now updated.
835
+ material = tester.widget <Material >(drawerMaterial);
836
+ expect (material.clipBehavior, Clip .hardEdge);
837
+ });
735
838
});
736
839
}
0 commit comments