5 4 月 2026, 周日

MaterialApp

MaterialApp代表使用Material设计风格的应用,里面包含了其所需要的基本控件。一个完整的Flutter项目是由这个主组件开始的。

MaterialApp属性详解

属性 类型 简述
home Widget 主页。用于指定当前App打开时显示的页面
routes Map<String, WidgetBuilder> 路由表,定义页面跳转规则
initialRoute String 初始路由名称
onGenerateRoute RouteFactory 通过pushNamed跳转路由页面时,在routes查找不到时回调
onUnknownRoute RouteFactory onGenerateRoute 无法生成路由时调用
navigatorObservers List<NavigatorObserver> 导航的监听器列表
builder TransitionBuilder 构建Widget前调用, 一般做字体大小,方向,主题颜色等配置
title String 应用标题。出现在Android任务管理器的程序快照之上 ,或iOS的程序切换管理器中
onGenerateTitle GenerateAppTitle title一样,但含有一个context参数用于做本地化
theme ThemeData 应用程序的主题,各种的定制颜色都可以设置,用于程序主题切换
darkTheme ThemeData 深色模式下的主题
themeMode ThemeMode 用于设定主题模式
color Color 应用的主颜色值
locale Locale 用于本地化。如果为null则使用当前系统区域
localizationsDelegates Iterable<LocalizationsDelegate<dynamic>> 本地化委托,用于更改Widget默认的提示语,按钮text等
localeListResolutionCallback LocaleListResolutionCallback 该回调负责在应用启动时以及用户更改设备的区域设置时选择应用的区域设置
localeResolutionCallback LocaleResolutionCallback 当传入的是不支持的语种,可通过该回调做相应处理
supportedLocales Iterable<Locale> 传入支持的语种列表
showPerformanceOverlay bool 用于性能测试。
checkerboardRasterCacheImages bool true时,打开光栅缓存图像的棋盘格
checkerboardOffscreenLayers bool 为true时,打开棋盘格层
showSemanticsDebugger bool 为true时,打开Widget边框,显示布局边界
debugShowCheckedModeBanner bool 为true时,在debug模式下显示右上角的debug横幅
debugShowMaterialGrid bool debug模式下是否显示Material网格
// 在构建UI前,设置一些属性
MaterialApp(
      builder: (BuildContext context, Widget child) {
        return MediaQuery(
          data: MediaQuery.of(context).copyWith(
                textScaleFactor: 1.4,
              ),
          child: child,
        );
      },
    );
Avatar photo

sion932