MaterialApp 详解

一、主要参数含义

title : 在任务管理窗口中所显示的应用名字
theme : 应用各种 UI 所使用的主题颜色
color : 应用的主要颜色值(primary color),也就是安卓任务管理窗口中所显示的应用颜色
home : 应用默认所显示的界面 Widget
routes : 应用的顶级导航表格,这个是多页面应用用来控制页面跳转的,类似于网页的网址
initialRoute :第一个显示的路由名字,默认值为 Window.defaultRouteName
onGenerateRoute : 生成路由的回调函数,当导航的命名路由的时候,会使用这个来生成界面
onLocaleChanged : 当系统修改语言的时候,会触发å这个回调
navigatorObservers : 应用 Navigator 的监听器
debugShowMaterialGrid : 是否显示 Material design 基础布局网格,用来调试 UI 的工具
showPerformanceOverlay : 显示性能标签
checkerboardRasterCacheImages 、showSemanticsDebugger、debugShowCheckedModeBanner 各种调试开关

二、基本示例:

1、title、color 示例
在任务管理器,就会显示该标题、颜色

2、home 、initialRoute、onGenerateRoute 示例

注意:
MaterialApp的构造方法中的每一个参数都是可以省略的,但是官方还是要求[home] ,[routes][onGenerateRoute]这三个参数至少要填写一个

home 示例

import 'package:flutter/material.dart';

void main() => runApp(MaterialAppDemo());

// 第一个类
class FirstScreen extends StatelessWidget {
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("First Bar")),
        body: Center(child: Text("First Body"))
    );
  }
}

// 第二个类
class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("Second Bar")),
        body: Center(child: Text("Second Body"))
    );
  }
}

// 最后一个类
class MaterialAppDemo extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '应用名称',
      color: Colors.green,
      home: SecondScreen(),
      theme: ThemeData(
          primaryColor: Colors.redAccent
      )
    );
  }
}

MaterialApp 详解_第1张图片
initialRoute、onGenerateRoute 示例
将上面最后一个(主类)代码改为如下

class MaterialAppDemo extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '应用名称',
      theme: ThemeData(
          primaryColor: Colors.redAccent
      ),
      // 该 initialRoute 默认值为 /,若不指定该值,则须在routes中的某个 key 替换为 '/'
      // 例如  'second': (BuildContext context) => SecondScreen() 改为  '/': (BuildContext context) => SecondScreen()
      initialRoute: 'second',
      routes: {
        "third": (BuildContext context) => ThirdScreen(),
        'first': (BuildContext context) => FirstScreen(),
        'second': (BuildContext context) => SecondScreen()
      },
    );
  }
}

MaterialApp 详解_第2张图片
3、debugShowMaterialGrid 示例
将上面最后一个(主类)代码中添加如下一行语句

debugShowMaterialGrid: true

MaterialApp 详解_第3张图片
4、showPerformanceOverlay 示例
将上面最后一个(主类)代码中添加如下一行语句

showPerformanceOverlay: true

MaterialApp 详解_第4张图片

你可能感兴趣的:(Flutter,常用组件)