Fix MaterialApp's _navigatorObserver when only builder used (#29413) Fix MaterialApp's _navigatorObserver so it doesn't cause WidgetApp's assertion to fail when using custom navigator, fixes #18904
diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart index f86fb35..b033b93 100644 --- a/packages/flutter/lib/src/material/app.dart +++ b/packages/flutter/lib/src/material/app.dart
@@ -419,7 +419,7 @@ _navigatorObservers = List<NavigatorObserver>.from(widget.navigatorObservers) ..add(_heroController); } else { - _navigatorObservers = null; + _navigatorObservers = const <NavigatorObserver>[]; } }
diff --git a/packages/flutter/test/material/app_test.dart b/packages/flutter/test/material/app_test.dart index 5cc30aa..56c9fa7 100644 --- a/packages/flutter/test/material/app_test.dart +++ b/packages/flutter/test/material/app_test.dart
@@ -381,6 +381,17 @@ expect(log, <String>['onGenerateRoute /', 'onUnknownRoute /']); }); + testWidgets('MaterialApp with builder and no route information works.', (WidgetTester tester) async { + // Regression test for https://github.com/flutter/flutter/issues/18904 + await tester.pumpWidget( + MaterialApp( + builder: (BuildContext context, Widget child) { + return const SizedBox(); + }, + ), + ); + }); + testWidgets('Can get text scale from media query', (WidgetTester tester) async { double textScaleFactor; await tester.pumpWidget(MaterialApp(