Unverified Commit 562b6f76 authored by xubaolin's avatar xubaolin Committed by GitHub

fix a MaterialApp NNBD issue (#81529)

parent 9cc8d78e
...@@ -815,7 +815,7 @@ class _MaterialAppState extends State<MaterialApp> { ...@@ -815,7 +815,7 @@ class _MaterialAppState extends State<MaterialApp> {
return widget.builder!(context, child); return widget.builder!(context, child);
}, },
) )
: child!, : child ?? const SizedBox.shrink(),
), ),
); );
} }
......
...@@ -1170,7 +1170,7 @@ class _WidgetsAppState extends State<WidgetsApp> with WidgetsBindingObserver { ...@@ -1170,7 +1170,7 @@ class _WidgetsAppState extends State<WidgetsApp> with WidgetsBindingObserver {
assert(!_usesRouter); assert(!_usesRouter);
_defaultRouteInformationProvider?.dispose(); _defaultRouteInformationProvider?.dispose();
_defaultRouteInformationProvider = null; _defaultRouteInformationProvider = null;
if (oldWidget == null || widget.navigatorKey != oldWidget.navigatorKey) { if (_navigator == null || widget.navigatorKey != oldWidget!.navigatorKey) {
_navigator = widget.navigatorKey ?? GlobalObjectKey<NavigatorState>(this); _navigator = widget.navigatorKey ?? GlobalObjectKey<NavigatorState>(this);
} }
assert(_navigator != null); assert(_navigator != null);
......
...@@ -64,6 +64,20 @@ class ElevationColor { ...@@ -64,6 +64,20 @@ class ElevationColor {
} }
void main() { void main() {
// Regression test for https://github.com/flutter/flutter/issues/81504
testWidgets('MaterialApp.home nullable and update test', (WidgetTester tester) async {
// _WidgetsAppState._usesNavigator == true
await tester.pumpWidget(const MaterialApp(home: SizedBox.shrink()));
// _WidgetsAppState._usesNavigator == false
await tester.pumpWidget(const MaterialApp()); // Do not crash!
// _WidgetsAppState._usesNavigator == true
await tester.pumpWidget(const MaterialApp(home: SizedBox.shrink())); // Do not crash!
expect(tester.takeException(), null);
});
testWidgets('default Material debugFillProperties', (WidgetTester tester) async { testWidgets('default Material debugFillProperties', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
const Material().debugFillProperties(builder); const Material().debugFillProperties(builder);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment