@@ -718,6 +718,102 @@ void main() {
718
718
expect (treeView.treeNodeBuilder, isA <TreeViewNodeBuilder <String >>());
719
719
expect (treeView.treeRowBuilder, isA <TreeViewRowBuilder <String >>());
720
720
});
721
+
722
+ testWidgets (
723
+ 'TreeViewNode should expand/collapse correctly when the animation duration is set to zero.' ,
724
+ (WidgetTester tester) async {
725
+ // Regression test for https://github.com/flutter/flutter/issues/154292
726
+ final TreeViewController controller = TreeViewController ();
727
+ final List <TreeViewNode <String >> tree = < TreeViewNode <String >> [
728
+ TreeViewNode <String >('First' ),
729
+ TreeViewNode <String >(
730
+ 'Second' ,
731
+ children: < TreeViewNode <String >> [
732
+ TreeViewNode <String >(
733
+ 'alpha' ,
734
+ children: < TreeViewNode <String >> [
735
+ TreeViewNode <String >('uno' ),
736
+ TreeViewNode <String >('dos' ),
737
+ TreeViewNode <String >('tres' ),
738
+ ],
739
+ ),
740
+ TreeViewNode <String >('beta' ),
741
+ TreeViewNode <String >('kappa' ),
742
+ ],
743
+ ),
744
+ TreeViewNode <String >(
745
+ 'Third' ,
746
+ expanded: true ,
747
+ children: < TreeViewNode <String >> [
748
+ TreeViewNode <String >('gamma' ),
749
+ TreeViewNode <String >('delta' ),
750
+ TreeViewNode <String >('epsilon' ),
751
+ ],
752
+ ),
753
+ TreeViewNode <String >('Fourth' ),
754
+ ];
755
+
756
+ await tester.pumpWidget (MaterialApp (
757
+ home: TreeView <String >(
758
+ tree: tree,
759
+ controller: controller,
760
+ toggleAnimationStyle: AnimationStyle (
761
+ curve: Curves .easeInOut,
762
+ duration: Duration .zero,
763
+ ),
764
+ treeNodeBuilder: (
765
+ BuildContext context,
766
+ TreeViewNode <Object ?> node,
767
+ AnimationStyle animationStyle,
768
+ ) {
769
+ final Widget child = GestureDetector (
770
+ behavior: HitTestBehavior .translucent,
771
+ onTap: () => controller.toggleNode (node),
772
+ child: TreeView .defaultTreeNodeBuilder (
773
+ context,
774
+ node,
775
+ animationStyle,
776
+ ),
777
+ );
778
+
779
+ return child;
780
+ },
781
+ ),
782
+ ));
783
+
784
+ expect (find.text ('First' ), findsOneWidget);
785
+ expect (find.text ('Second' ), findsOneWidget);
786
+ expect (find.text ('Third' ), findsOneWidget);
787
+ expect (find.text ('Fourth' ), findsOneWidget);
788
+ expect (find.text ('alpha' ), findsNothing);
789
+ expect (find.text ('beta' ), findsNothing);
790
+ expect (find.text ('kappa' ), findsNothing);
791
+ expect (find.text ('gamma' ), findsOneWidget);
792
+ expect (find.text ('delta' ), findsOneWidget);
793
+ expect (find.text ('epsilon' ), findsOneWidget);
794
+ expect (find.text ('uno' ), findsNothing);
795
+ expect (find.text ('dos' ), findsNothing);
796
+ expect (find.text ('tres' ), findsNothing);
797
+
798
+ await tester.tap (find.text ('Second' ));
799
+ await tester.pumpAndSettle ();
800
+
801
+ expect (find.text ('alpha' ), findsOneWidget);
802
+
803
+ await tester.tap (find.text ('alpha' ));
804
+ await tester.pumpAndSettle ();
805
+
806
+ expect (find.text ('uno' ), findsOneWidget);
807
+ expect (find.text ('dos' ), findsOneWidget);
808
+ expect (find.text ('tres' ), findsOneWidget);
809
+
810
+ await tester.tap (find.text ('alpha' ));
811
+ await tester.pumpAndSettle ();
812
+
813
+ expect (find.text ('uno' ), findsNothing);
814
+ expect (find.text ('dos' ), findsNothing);
815
+ expect (find.text ('tres' ), findsNothing);
816
+ });
721
817
});
722
818
723
819
group ('TreeViewport' , () {
0 commit comments