📜  Flutter中的 MaterialApp 类

📅  最后修改于: 2022-05-13 01:56:21.554000             🧑  作者: Mango

Flutter中的 MaterialApp 类

MaterialApp 类: MaterialApp 是一个flutter中的预定义类。它很可能是flutter的主要或核心组件。我们可以访问Flutter SDK 提供的所有其他组件和小部件。 Text widget、Dropdownbutton widget、AppBar widget、Scaffold widget、ListView widget、StatelessWidget、StatefulWidget、IconButton widget、TextField widget、Padding widget、ThemeData widget等都是可以使用MaterialApp类访问的widget。使用 MaterialApp 类可以访问更多的小部件。使用这个小部件,我们可以制作一个有吸引力的应用程序。
这是一个非常简单的dart语言代码,用于制作一个 appBar 标题为GeeksforGeeks的屏幕。

MaterialApp 类的构造函数:

const MaterialApp(
{Key key,
GlobalKey navigatorKey,
Widget home,
Map routes: const {},
String initialRoute,
RouteFactory onGenerateRoute,
InitialRouteListFactory onGenerateInitialRoutes,
RouteFactory onUnknownRoute,
List navigatorObservers: const [],
TransitionBuilder builder,
String title: '',
GenerateAppTitle onGenerateTitle,
Color color,
ThemeData theme,
ThemeData darkTheme,
ThemeData highContrastTheme,
ThemeData highContrastDarkTheme,
ThemeMode themeMode: ThemeMode.system,
Locale locale,
Iterable localizationsDelegates,
LocaleListResolutionCallback localeListResolutionCallback,
LocaleResolutionCallback localeResolutionCallback,
Iterable supportedLocales: const [Locale('en', 'US')],
bool debugShowMaterialGrid: false,
bool showPerformanceOverlay: false,
bool checkerboardRasterCacheImages: false,
bool checkerboardOffscreenLayers: false,
bool showSemanticsDebugger: false,
bool debugShowCheckedModeBanner: true,
Map shortcuts,
Map> actions}
)

MaterialApp 小部件的属性:

  • action:该属性以Map>为对象。它控制意图键。
  • backButtonDispatcher:它决定了如何处理后退按钮。
  • checkerboardRasterCacheImage:此属性接受一个布尔值作为对象。如果设置为 true,它将打开光栅缓存图像的棋盘格。
  • color:它控制应用程序中使用的原色。
  • darkTheme:它为应用程序的黑暗主题提供主题数据。
  • debugShowCheckedModeBanner:该属性接受一个布尔值作为对象来决定是否显示调试横幅。
  • debugShowMaterialGird:此属性将布尔值作为对象。如果设置为 true,它会绘制一个基线网格材质应用程序。
  • highContrastDarkTheme:它提供了用于高对比度主题的主题数据。
  • home:此属性将小部件作为对象显示在应用程序的默认路由上。
  • initialRoute:此属性接受一个字符串作为对象,以给出构建导航器的第一条路线的名称。
  • 语言环境:它为MaterialApp 提供语言环境。
  • localizationsDelegate:这为语言环境提供了一个委托。
  • navigatorObserver:GlobalKey为对象,在构建导航器时生成key。
  • navigatorObserver:此属性将List作为对象来为导航器创建观察者列表。
  • onGenerateInitialRoutes:该属性以InitialRouteListFactory typedef为对象生成初始路由。
  • onGeneratRoute: onGenerateRoute接受一个RouteFactory作为对象。当应用程序导航到命名路由时使用它。
  • OnGenerateTitle:此属性以RouteFactory typedef作为对象,为应用程序生成标题字符串(如果提供)。
  • onUnknownRoute: onUnknownRouteRouteFactory typedef为对象,在其他方法失败时提供路由。
  • routeInformationParse:此属性持有RouteInformationParser作为对象,将路由信息从 routeInformationProvider 转换为通用数据类型。
  • routeInformationProvider:该属性以RouteInformationProvider类为对象。它负责提供路由信息。
  • routeDelegate:此属性将RouterDelegate作为对象来配置给定的小部件。
  • routes: routes属性以LogicalKeySet类为对象,控制应用的最顶层路由。
  • 快捷方式:该属性以LogicalKeySet类作为对象来决定应用程序的键盘快捷方式。
  • showPerformanceOverlay: showPerformanceOverlay接受一个布尔值作为打开或关闭性能覆盖的对象。
  • showSemantisDebugger:此属性接受一个布尔值作为对象。如果设置为 true,它会显示一些可访问的信息。
  • supportedLocales: supportedLocales属性通过将Iterable类作为对象来保存应用程序中使用的本地变量。
  • theme:该属性以ThemeData类为对象,为 MaterialApp 描述主题。
  • themeMode:此属性将ThemeMode 枚举作为对象来决定材质应用程序的主题。
  • title: title属性以字符串为对象,决定设备应用的一行描述。
Dart
import 'package:flutter/material.dart';
 
void main() {
  runApp(MaterialApp(
    title: 'GeeksforGeeks',
    theme: ThemeData(
      primarySwatch: Colors.green
    ),
    home: Scaffold(
      appBar: AppBar(
        title:Text(
          'GeeksforGeeks'
        )
      ),
    ),
  ));
}


代码说明:

  • import 语句: import语句用于导入flutter SDK 提供的库。在这里,我们导入了“材料”。dart'文件。我们可以通过导入这个文件来使用所有实现材料设计的flutter小部件。
  • main()函数:与许多其他编程语言一样,我们也有 main函数,我们必须在其中编写要在应用程序启动时执行的语句。 main函数的返回类型是'void'
  • runApp(Widget widget)函数: void runApp(Widget widget) 将一个小部件作为参数并将其设置在屏幕上。它为小部件提供了约束以适应屏幕。它使给定的小部件成为应用程序的根小部件,并将其他小部件作为它的子小部件。在这里,我们使用MaterialApp作为根小部件,我们在其中定义了其他小部件。
  • MaterialApp() 小部件:我在开头讨论了 MaterialApp。让我们看一下 MaterialApp 小部件的不同属性。
  • title:此属性用于向用户提供应用程序的简短描述。当用户在移动设备上按下最近的应用程序按钮时,会显示标题中进行的文本。
  • 主题:此属性用于为应用程序提供默认主题,如应用程序的主题颜色。
    为此,我们使用名为ThemeData()的内置类/小部件。在Themedata()小部件中,我们必须编写与主题相关的不同属性。这里我们使用了primarySwatch ,它用于定义应用程序的默认主题颜色。要选择颜色,我们使用了材质库中的Colors类。在 ThemeData() 中,我们还可以定义一些其他属性,例如 TextTheme、Brightness(可以通过此启用深色主题)、AppBarTheme 等等。
  • home:用于应用程序的默认路由,即应用程序正常启动时显示其中定义的widget。在这里,我们在 home 属性中定义了Scaffold小部件。在 Scaffold 内部,我们定义了各种属性,例如 appBar、body、floatingActionButton、backgroundColor 等。
    例如,在appBar属性中,我们使用了 AppBar() 小部件,其中我们传递了“GeeksforGeeks”作为标题,它将显示在 appbar 中应用程序的顶部。
  • MaterialApp() 中的其他属性是debugShowCheckedModeBanner (用于删除顶部角落的调试标签)、 darkTheme (用于在应用程序中请求暗模式)、颜色(用于应用程序的主色)、路由(用于应用程序的路由表)、 ThemeMode (确定使用哪个主题)等

输出:

上述代码的实现

  • 在这里我们可以看到appbar标题中定义的文本显示在顶部。
  • 我们定义的默认主题颜色是绿色。
  • runApp()已将小部件安装在整个屏幕上。