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
      )
    );
  }
}

在这里插入图片描述
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: <String, WidgetBuilder>{
        "third": (BuildContext context) => ThirdScreen(),
        'first': (BuildContext context) => FirstScreen(),
        'second': (BuildContext context) => SecondScreen()
      },
    );
  }
}

在这里插入图片描述
3、debugShowMaterialGrid 示例
将上面最后一个(主类)代码中添加如下一行语句

debugShowMaterialGrid: true

在这里插入图片描述
4、showPerformanceOverlay 示例
将上面最后一个(主类)代码中添加如下一行语句

showPerformanceOverlay: true

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值