diff --git a/packages/flutter_adaptive_scaffold/CHANGELOG.md b/packages/flutter_adaptive_scaffold/CHANGELOG.md index 8873f7e2645..31547d9a62a 100644 --- a/packages/flutter_adaptive_scaffold/CHANGELOG.md +++ b/packages/flutter_adaptive_scaffold/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.10 + +* FIX : Assertion added when tried with less than 2 destinations - [flutter/flutter#110902](https://github.com/flutter/flutter/issues/110902) + ## 0.1.9 * FIX : Drawer stays open even on destination tap - [flutter/flutter#141938](https://github.com/flutter/flutter/issues/141938) diff --git a/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart b/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart index 531a088b794..663817a7ec1 100644 --- a/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart +++ b/packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart @@ -103,7 +103,10 @@ class AdaptiveScaffold extends StatefulWidget { this.navigationRailWidth = 72, this.extendedNavigationRailWidth = 192, this.appBarBreakpoint, - }); + }) : assert( + destinations.length >= 2, + 'At least two destinations are required', + ); /// The destinations to be used in navigation items. These are converted to /// [NavigationRailDestination]s and [BottomNavigationBarItem]s and inserted diff --git a/packages/flutter_adaptive_scaffold/pubspec.yaml b/packages/flutter_adaptive_scaffold/pubspec.yaml index a494b4fc611..73b8537e760 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.1.9 +version: 0.1.10 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 808b03ea138..8dcaf2d5a0a 100644 --- a/packages/flutter_adaptive_scaffold/test/adaptive_scaffold_test.dart +++ b/packages/flutter_adaptive_scaffold/test/adaptive_scaffold_test.dart @@ -257,9 +257,9 @@ void main() { ]; await tester.pumpWidget( - const MaterialApp( + MaterialApp( home: MediaQuery( - data: MediaQueryData(size: Size(700, 900)), + data: const MediaQueryData(size: Size(700, 900)), child: AdaptiveScaffold( destinations: destinations, ), @@ -717,6 +717,33 @@ void main() { expect(appBar, findsOneWidget); }, ); + + testWidgets( + 'When only one destination passed, shall throw assertion error', + (WidgetTester tester) async { + const List destinations = [ + NavigationDestination( + icon: Icon(Icons.inbox_outlined), + selectedIcon: Icon(Icons.inbox), + label: 'Inbox', + ), + ]; + + expect( + () => tester.pumpWidget( + MaterialApp( + home: MediaQuery( + data: const MediaQueryData(size: Size(700, 900)), + child: AdaptiveScaffold( + destinations: destinations, + ), + ), + ), + ), + throwsA(isA()), + ); + }, + ); } /// An empty widget that implements [PreferredSizeWidget] to ensure that