Provide an initial rotation of the ExpansionIcon if isExpanded = true on initState (#15657)
* rotate expansion icon fully if initial state expanded = true
* add test case for initially expanded
* remove unused import
* Update expand_icon_test.dart
add linebreak
* import dart:math as math
diff --git a/packages/flutter/lib/src/material/expand_icon.dart b/packages/flutter/lib/src/material/expand_icon.dart
index 3a1b775..369636d 100644
--- a/packages/flutter/lib/src/material/expand_icon.dart
+++ b/packages/flutter/lib/src/material/expand_icon.dart
@@ -1,6 +1,7 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+import 'dart:math' as math;
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
@@ -72,6 +73,10 @@
curve: Curves.fastOutSlowIn
)
);
+ // If the widget is initially expanded, rotate the icon without animating it.
+ if (widget.isExpanded) {
+ _controller.value = math.pi;
+ }
}
@override
diff --git a/packages/flutter/test/material/expand_icon_test.dart b/packages/flutter/test/material/expand_icon_test.dart
index 94fd279..5cd3f51 100644
--- a/packages/flutter/test/material/expand_icon_test.dart
+++ b/packages/flutter/test/material/expand_icon_test.dart
@@ -67,6 +67,23 @@
expect(expanded, isFalse);
});
+
+ testWidgets('ExpandIcon is rotated initially if isExpanded is true on first build', (WidgetTester tester) async {
+ bool expanded = true;
+
+ await tester.pumpWidget(
+ wrap(
+ child: new ExpandIcon(
+ isExpanded: expanded,
+ onPressed: (bool isExpanded) {
+ expanded = !isExpanded;
+ },
+ )
+ )
+ );
+ final RotationTransition rotation = tester.firstWidget(find.byType(RotationTransition));
+ expect(rotation.turns.value, 0.5);
+ });
}
Widget wrap({ Widget child }) {