MaterialApp({Key? key, GlobalKey<NavigatorState>
navigatorKey, GlobalKey<ScaffoldMessengerState>?
scaffoldMessengerKey, Widget? home, Map<String,
WidgetBuilder> routes = const <String, WidgetBuilder>{},
String? initialRoute, RouteFactory? onGenerateRoute,
InitialRouteListFactory? onGenerateInitialRoutes,
RouteFactory? onUnknownRoute, List<NavigatorObserver>
navigatorObservers = const <NavigatorObserver>[],
TransitionBuilder? builder, String title = '',
GenerateAppTitle? onGenerateTitle, Color? color, ThemeData?
theme, ThemeData? darkTheme, ThemeData? highContrastTheme,
ThemeData? highContrastDarkTheme, ThemeMode? themeMode =
ThemeMode.system, Locale? locale,
Iterable<LocalizationsDelegate>? localizationsDelegates,
LocaleListResolutionCallback? localeListResolutionCallback,
LocaleResolutionCallback? localeResolutionCallback,
Iterable<Locale> supportedLocales = const <Locale>
[Locale('en', 'US')], bool debugShowMaterialGrid = false,
bool showPerformanceOverlay = false, bool
checkerboardRasterCacheImages = false, bool
checkerboardOffscreenLayers = false, bool
showSemanticsDebugger = false, bool
debugShowCheckedModeBanner = true, Map<ShortcutActivator,
Intent>? shortcuts, Map<Type, Action<Intent>>? actions,
String? restorationScopeId, ScrollBehavior? scrollBehavior,
bool useInheritedMediaQuery = false})
이게 뭘까...??
구글이 만들고, 지향하는 디자인인 Material Design을 사용할 수 있게 만들어주는 클래스이다.
iOS 스타일로 만들 수 있는 Cupertino와 함께, 보통 Android 스타일에서 대표적으로 쓰이고 있다.
저 위의 수 많은 파라미터중에서 필수적인 것은 home (widget) 이다.
home은 app을 실행할 때, 가장 먼저 나오는 페이지(위젯)이다.
예제에서는 Scaffold() 안에 여러가지 파라미터들이 많이 들어가 있다.
MaterialApp() 클래스를 사용하게 되면, Scaffold를 사용할 수 있는데, Material Design 안에서 Scaffold 라는 뼈대(?), 형태를 사용하겠다고 말하는 것이다.
많은 예제에서 사용되고는 있지만, 당연히 사용하지 않고도 앱을 만들 수 있다.
Scaffold
-> MaterialApp() 아래에 존재하며, 많은 기본 기능들을 제공한다. (Material Design의 AppBar, BottomNavigationBar, FloatingActionButton 등...)
참고 :
https://api.flutter.dev/flutter/material/MaterialApp-class.html
https://100sucoding.tistory.com/33