diff --git a/packages/flutter_adaptive_scaffold/CHANGELOG.md b/packages/flutter_adaptive_scaffold/CHANGELOG.md index 85dcaaae52..88f6aa175b 100644 --- a/packages/flutter_adaptive_scaffold/CHANGELOG.md +++ b/packages/flutter_adaptive_scaffold/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +* Fix passthrough of `leadingExtendedNavRail`, `leadingUnextendedNavRail` and `trailingNavRail` + ## 0.0.8 Make fuchsia a mobile platform. diff --git a/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart b/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart index 58509ffe77..e9ec85190c 100644 --- a/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart +++ b/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart @@ -480,6 +480,8 @@ class _AdaptiveScaffoldState extends State { ? Drawer( child: NavigationRail( extended: true, + leading: widget.leadingExtendedNavRail, + trailing: widget.trailingNavRail, selectedIndex: widget.selectedIndex, destinations: widget.destinations .map((_) => AdaptiveScaffold.toRailDestination(_)) @@ -498,6 +500,8 @@ class _AdaptiveScaffoldState extends State { key: const Key('primaryNavigation'), builder: (_) => AdaptiveScaffold.standardNavigationRail( width: widget.navigationRailWidth, + leading: widget.leadingUnextendedNavRail, + trailing: widget.trailingNavRail, selectedIndex: widget.selectedIndex, destinations: widget.destinations .map((_) => AdaptiveScaffold.toRailDestination(_)) @@ -510,6 +514,8 @@ class _AdaptiveScaffoldState extends State { builder: (_) => AdaptiveScaffold.standardNavigationRail( width: widget.extendedNavigationRailWidth, extended: true, + leading: widget.leadingExtendedNavRail, + trailing: widget.trailingNavRail, selectedIndex: widget.selectedIndex, destinations: widget.destinations .map((_) => AdaptiveScaffold.toRailDestination(_)) diff --git a/packages/flutter_adaptive_scaffold/pubspec.yaml b/packages/flutter_adaptive_scaffold/pubspec.yaml index 36a30a23e4..33b0353283 100644 --- a/packages/flutter_adaptive_scaffold/pubspec.yaml +++ b/packages/flutter_adaptive_scaffold/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_adaptive_scaffold description: Widgets to easily build adaptive layouts, including navigation elements. -version: 0.0.8 +version: 0.0.9 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_adaptive_scaffold%22 repository: https://github.com/flutter/packages/tree/main/packages/flutter_adaptive_scaffold diff --git a/packages/flutter_adaptive_scaffold/test/adaptive_scaffold_test.dart b/packages/flutter_adaptive_scaffold/test/adaptive_scaffold_test.dart index 41377d1883..36a451ca08 100644 --- a/packages/flutter_adaptive_scaffold/test/adaptive_scaffold_test.dart +++ b/packages/flutter_adaptive_scaffold/test/adaptive_scaffold_test.dart @@ -193,6 +193,35 @@ void main() { expect(find.byType(PreferredSizeWidgetImpl), findsOneWidget); }, ); + + // Verify that the leading navigation rail widget is displayed + // based on the screen size + testWidgets( + 'adaptive scaffold displays leading widget in navigation rail', + (WidgetTester tester) async { + await Future.forEach(SimulatedLayout.values, + (SimulatedLayout region) async { + final MaterialApp app = region.app(); + await tester.binding.setSurfaceSize(region.size); + await tester.pumpWidget(app); + await tester.pumpAndSettle(); + + if (region.size == SimulatedLayout.large.size) { + expect(find.text('leading_extended'), findsOneWidget); + expect(find.text('leading_unextended'), findsNothing); + expect(find.text('trailing'), findsOneWidget); + } else if (region.size == SimulatedLayout.medium.size) { + expect(find.text('leading_extended'), findsNothing); + expect(find.text('leading_unextended'), findsOneWidget); + expect(find.text('trailing'), findsOneWidget); + } else if (region.size == SimulatedLayout.small.size) { + expect(find.text('leading_extended'), findsNothing); + expect(find.text('leading_unextended'), findsNothing); + expect(find.text('trailing'), findsNothing); + } + }); + }, + ); } /// An empty widget that implements [PreferredSizeWidget] to ensure that diff --git a/packages/flutter_adaptive_scaffold/test/simulated_layout.dart b/packages/flutter_adaptive_scaffold/test/simulated_layout.dart index 231b6b2d67..e81a5ff1aa 100644 --- a/packages/flutter_adaptive_scaffold/test/simulated_layout.dart +++ b/packages/flutter_adaptive_scaffold/test/simulated_layout.dart @@ -86,6 +86,9 @@ class TestScaffoldState extends State { smallSecondaryBody: (_) => Container(color: Colors.red), secondaryBody: (_) => Container(color: Colors.green), largeSecondaryBody: (_) => Container(color: Colors.blue), + leadingExtendedNavRail: const Text('leading_extended'), + leadingUnextendedNavRail: const Text('leading_unextended'), + trailingNavRail: const Text('trailing'), ); } }