Skip to content

Commit f05a555

Browse files
authored
Fix lerping for NavigationRailThemeData icon themes (#120066)
* Fix lerping for NavigationRail icon themes * fix typo
1 parent 5dbd281 commit f05a555

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

packages/flutter/lib/src/material/navigation_rail_theme.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,10 @@ class NavigationRailThemeData with Diagnosticable {
151151
elevation: lerpDouble(a?.elevation, b?.elevation, t),
152152
unselectedLabelTextStyle: TextStyle.lerp(a?.unselectedLabelTextStyle, b?.unselectedLabelTextStyle, t),
153153
selectedLabelTextStyle: TextStyle.lerp(a?.selectedLabelTextStyle, b?.selectedLabelTextStyle, t),
154-
unselectedIconTheme: IconThemeData.lerp(a?.unselectedIconTheme, b?.unselectedIconTheme, t),
155-
selectedIconTheme: IconThemeData.lerp(a?.selectedIconTheme, b?.selectedIconTheme, t),
154+
unselectedIconTheme: a?.unselectedIconTheme == null && b?.unselectedIconTheme == null
155+
? null : IconThemeData.lerp(a?.unselectedIconTheme, b?.unselectedIconTheme, t),
156+
selectedIconTheme: a?.selectedIconTheme == null && b?.selectedIconTheme == null
157+
? null : IconThemeData.lerp(a?.selectedIconTheme, b?.selectedIconTheme, t),
156158
groupAlignment: lerpDouble(a?.groupAlignment, b?.groupAlignment, t),
157159
labelType: t < 0.5 ? a?.labelType : b?.labelType,
158160
useIndicator: t < 0.5 ? a?.useIndicator : b?.useIndicator,

packages/flutter/test/material/navigation_rail_theme_test.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,14 @@ void main() {
227227
expect(_indicatorDecoration(tester)?.color, indicatorColor);
228228
});
229229

230+
// Regression test for https://github.com/flutter/flutter/issues/118618.
231+
testWidgets('NavigationRailThemeData lerps correctly with null iconThemes', (WidgetTester tester) async {
232+
final NavigationRailThemeData lerp = NavigationRailThemeData.lerp(const NavigationRailThemeData(), const NavigationRailThemeData(), 0.5)!;
233+
234+
expect(lerp.selectedIconTheme, isNull);
235+
expect(lerp.unselectedIconTheme, isNull);
236+
});
237+
230238
testWidgets('Default debugFillProperties', (WidgetTester tester) async {
231239
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
232240
const NavigationRailThemeData().debugFillProperties(builder);

0 commit comments

Comments
 (0)