diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart index 8dda10ff42..7877140d6d 100644 --- a/packages/flutter/lib/src/material/app_bar.dart +++ b/packages/flutter/lib/src/material/app_bar.dart @@ -336,7 +336,7 @@ class _AppBarState extends State { @override void didChangeDependencies() { super.didChangeDependencies(); - final ScaffoldState scaffold = Scaffold.of(context); + final ScaffoldState scaffold = Scaffold.of(context, nullOk: true); _hasDrawer = scaffold?.hasDrawer ?? false; _canPop = ModalRoute.of(context)?.canPop ?? false; } diff --git a/packages/flutter/test/material/app_bar_test.dart b/packages/flutter/test/material/app_bar_test.dart index e05024f78c..5456e10443 100644 --- a/packages/flutter/test/material/app_bar_test.dart +++ b/packages/flutter/test/material/app_bar_test.dart @@ -246,6 +246,25 @@ void main() { expect(tester.getSize(title).width, equals(620.0)); }); + testWidgets('AppBar with no Scaffold', (WidgetTester tester) async { + await tester.pumpWidget( + new SizedBox( + height: kToolbarHeight, + child: new AppBar( + leading: new Text('L'), + title: new Text('No Scaffold'), + actions: [new Text('A1'), new Text('A2')], + ), + ), + ); + + expect(find.text('L'), findsOneWidget); + expect(find.text('No Scaffold'), findsOneWidget); + expect(find.text('A1'), findsOneWidget); + expect(find.text('A2'), findsOneWidget); + }); + + testWidgets('AppBar render at zero size', (WidgetTester tester) async { await tester.pumpWidget( new Center(