MaterialApp constructor Null safety

const MaterialApp(
  1. {Key? key,
  2. GlobalKey<NavigatorState>? navigatorKey,
  3. GlobalKey<ScaffoldMessengerState>? scaffoldMessengerKey,
  4. Widget? home,
  5. Map<String, WidgetBuilder> routes = const <String, WidgetBuilder>{},
  6. String? initialRoute,
  7. RouteFactory? onGenerateRoute,
  8. InitialRouteListFactory? onGenerateInitialRoutes,
  9. RouteFactory? onUnknownRoute,
  10. List<NavigatorObserver> navigatorObservers = const <NavigatorObserver>[],
  11. TransitionBuilder? builder,
  12. String title = '',
  13. GenerateAppTitle? onGenerateTitle,
  14. Color? color,
  15. ThemeData? theme,
  16. ThemeData? darkTheme,
  17. ThemeData? highContrastTheme,
  18. ThemeData? highContrastDarkTheme,
  19. ThemeMode? themeMode = ThemeMode.system,
  20. Duration themeAnimationDuration = kThemeAnimationDuration,
  21. Curve themeAnimationCurve = Curves.linear,
  22. Locale? locale,
  23. Iterable<LocalizationsDelegate>? localizationsDelegates,
  24. LocaleListResolutionCallback? localeListResolutionCallback,
  25. LocaleResolutionCallback? localeResolutionCallback,
  26. Iterable<Locale> supportedLocales = const <Locale>[Locale('en', 'US')],
  27. bool debugShowMaterialGrid = false,
  28. bool showPerformanceOverlay = false,
  29. bool checkerboardRasterCacheImages = false,
  30. bool checkerboardOffscreenLayers = false,
  31. bool showSemanticsDebugger = false,
  32. bool debugShowCheckedModeBanner = true,
  33. Map<ShortcutActivator, Intent>? shortcuts,
  34. Map<Type, Action<Intent>>? actions,
  35. String? restorationScopeId,
  36. ScrollBehavior? scrollBehavior,
  37. bool useInheritedMediaQuery = false}
)

Creates a MaterialApp.

At least one of home, routes, onGenerateRoute, or builder must be non-null. If only routes is given, it must include an entry for the Navigator.defaultRouteName (/), since that is the route used when the application is launched with an intent that specifies an otherwise unsupported route.

This class creates an instance of WidgetsApp.

The boolean arguments, routes, and navigatorObservers, must not be null.

Implementation

const MaterialApp({
  super.key,
  this.navigatorKey,
  this.scaffoldMessengerKey,
  this.home,
  Map<String, WidgetBuilder> this.routes = const <String, WidgetBuilder>{},
  this.initialRoute,
  this.onGenerateRoute,
  this.onGenerateInitialRoutes,
  this.onUnknownRoute,
  List<NavigatorObserver> this.navigatorObservers = const <NavigatorObserver>[],
  this.builder,
  this.title = '',
  this.onGenerateTitle,
  this.color,
  this.theme,
  this.darkTheme,
  this.highContrastTheme,
  this.highContrastDarkTheme,
  this.themeMode = ThemeMode.system,
  this.themeAnimationDuration = kThemeAnimationDuration,
  this.themeAnimationCurve = Curves.linear,
  this.locale,
  this.localizationsDelegates,
  this.localeListResolutionCallback,
  this.localeResolutionCallback,
  this.supportedLocales = const <Locale>[Locale('en', 'US')],
  this.debugShowMaterialGrid = false,
  this.showPerformanceOverlay = false,
  this.checkerboardRasterCacheImages = false,
  this.checkerboardOffscreenLayers = false,
  this.showSemanticsDebugger = false,
  this.debugShowCheckedModeBanner = true,
  this.shortcuts,
  this.actions,
  this.restorationScopeId,
  this.scrollBehavior,
  this.useInheritedMediaQuery = false,
}) : assert(routes != null),
     assert(navigatorObservers != null),
     assert(title != null),
     assert(debugShowMaterialGrid != null),
     assert(showPerformanceOverlay != null),
     assert(checkerboardRasterCacheImages != null),
     assert(checkerboardOffscreenLayers != null),
     assert(showSemanticsDebugger != null),
     assert(debugShowCheckedModeBanner != null),
     routeInformationProvider = null,
     routeInformationParser = null,
     routerDelegate = null,
     backButtonDispatcher = null,
     routerConfig = null;