MaterialApp 是 Flutter 中常用的一个 widget,它是构建基于 Material Design 风格应用的根组件,主要负责各种全局状态的管理以及定义应用程序的主题样式等。

void main() {
runApp(MaterialApp(
title: "flutterAPP___test",
theme: ThemeData(
primarySwatch: Colors.yellow,
),
// showPerformanceOverlay: true, //性能显示
// debugShowCheckedModeBanner: false, //去除bug图标
// debugShowMaterialGrid: true, //网格
// checkerboardOffscreenLayers: true,//检查不必要的setlayer
// showSemanticsDebugger: true, //元素位置
home: Scaffold(
// appBar: AppBar(title: const Text("这是导航栏", textDirection: TextDirection.rtl)),
body: MyFlutter1())));

1. home

属性类型:Widget

默认值:null

home 属性指定应用程序的主屏幕,是一个 Widget 对象,通常是一个页面的根组件。当应用程序启动时,会自动显示在屏幕上。例如:home: HomePage()

2. title

属性类型:String

默认值:''

title 属性指定应用程序的标题,会在应用程序的顶部和任务管理器的标签上显示。例如:title: 'My App'

3. theme

属性类型:ThemeData

默认值:ThemeData.light();

 ThemeData(
// 设置整体亮度模式为明亮
brightness: Brightness.light,
// 设置应用程序的主要颜色
primaryColor: Colors.blue,
// 设置主要颜色的亮度模式为暗色
primaryColorBrightness: Brightness.dark,
// 设置主要颜色的浅色版本
primaryColorLight: Colors.lightBlue,
// 设置主要颜色的暗色版本
primaryColorDark: Colors.darkBlue,
// 设置强调颜色
accentColor: Colors.yellow,
// 设置强调颜色的亮度模式为暗色
accentColorBrightness: Brightness.dark,
// 设置脚手架的背景颜色
scaffoldBackgroundColor: Colors.white,
// 自定义按钮样式
buttonTheme: ButtonThemeData(
// 设置按钮的颜色
buttonColor: Colors.blue,
// 设置按钮的形状
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
),
),

4. routes

属性类型:Map<String, WidgetBuilder>

默认值:null

routes 属性定义应用程序的路由映射表,即定义不同路径对应的页面组件。这样可以通过路由名称导航到不同的页面。

routes: {
'/home': (context) => HomePage(),
'/detail': (context) => DetailPage(),
},

5. initialRoute

属性类型:String

默认值:null

initialRoute 属性定义应用程序启动后显示的初始路由。例如:initialRoute: '/home'

6. onGenerateRoute

属性类型:(RouteSettings settings) -> Route<dynamic>)

默认值:null

onGenerateRoute 属性在使用命名路由导航到一个未定义的路由时会被调用,可以通过该方法动态生成对应的页面。

onGenerateRoute: (settings) {
if (settings.name == '/profile') {
return MaterialPageRoute(builder: (context) => ProfilePage());
}
return null;
},

7. onUnknownRoute

属性类型:(RouteSettings settings) -> Route<dynamic>)

默认值:null

onUnknownRoute 属性在无法找到任何路由时会被调用,可以在这里显示一个错误页面或其他处理逻辑。例如:

onUnknownRoute: (settings) {
return MaterialPageRoute(builder: (context) => ErrorPage());
},

8. builder

属性类型:(BuildContext context, Widget child) -> Widget

默认值:null

builder 属性在构建 MaterialApp 时可以使用该方法,可以在构建 MaterialApp 之前执行一些全局初始化的操作,返回一个 Widget 作为最终的根组件。例如:

builder: (context, child) {
// 进行一些全局初始化操作
return child;
},

flutter MaterialApp介绍的更多相关文章

  1. Flutter路由跳转及参数传递

    本文要介绍的知识点 用路由推出一个新页面 打开新页面时,传入参数 参数的回传 路由 做Android/iOS原生开发的时候,要打开一个新的页面,你得知道你的目标页面对象,然后初始化一个Intent或者 ...

  2. Flutter的使用教学笔记

    QQ交流群 Flutter 程序开发群:766307130 教程 官方实战 使用Flutter 构建精美的页面 云在千峰 博主一直是从事 Android 开发的,所以主要从 Android 技术角度来 ...

  3. 【Flutter学习】之动画实现原理浅析(三)

    一,概述 Flutter动画库的核心类是Animation对象,它生成指导动画的值,Animation对象指导动画的当前状态(例如,是开始.停止还是向前或者向后移动),但它不知道屏幕上显示的内容.动画 ...

  4. Google 以 Flutter 作为原生突破口,移动端即将统一了

    Android 的前生今世 Android 系统 Android系统作为全球第一大系统,基于 Java 开发的移动端有着诸多的性能优势. 2018年前 H5 的性能瓶颈和 RN 的停更 导致业界对跨平 ...

  5. flutter初探

    这两天看了下flutter,感觉这两年可能会爆发,所以尝试在mac和win10上面跑了下hello world... 移动技术简介 原生开发 跨平台技术简介 H5+原生(Cordova.Ionic.微 ...

  6. Flutter 1.0 正式版: Google 的便携 UI 工具包

    简评:所以 React-Native 和 Flutter 该怎么选? 在 10 个月前的 MWC 上,谷歌发布了 Flutter 的 Beta 版本,给跨平台应用开发带来了一种全新的选择,昨天谷歌正式 ...

  7. 学习Flutter应用开发有用的代码/库/专有技术列表

    当我开始使用Flutter开发该应用程序时,我开始担心:“最好的书写方式是什么?”以及“放置它的效果如何?”在这种情况下,您将需要学习和参考GitHub发布的代码和应用程​​序. 因此,我收集了似乎对 ...

  8. 干货 | 京东技术中台的Flutter实践之路

    在 2019 年,Flutter 推出了多个正式版本,支持的终端越来越多,使用的项目也越来越多.Flutter 正在经历从小范围尝鲜到大面积应用的过程,越来越多的研发团队加入到 Flutter 的学习 ...

  9. 可能对Flutter应用程序开发有用的代码/库/专有技术列表

    当我开始使用Flutter实施该应用程序时,我开始担心“如何最好地编写?”以及“如何使其更好地放置?”. 在这种情况下,您将需要参考GitHub上发布的代码和应用程​​序. 因此,我收集了似乎对Flu ...

  10. 移动应用开发:Flutter

    目录 前言 Flutter 介绍 移动应用开发:选择对比 原生开发 H5 技术 React Native Flutter 总结 参考 前言 "镜子镜子 告诉我,世界上最好的语言是什么&quo ...

随机推荐

  1. Python3中的printable

    import string characters = string.printable # printable 是用作字符串常量的预初始化字符串.里面包含所有的标点符号,数字 print(charac ...

  2. 区间检测(range)

    区间检测(range) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 给定一个长度为n的序列,进行m次检测,每次检测某个区间中,是否有重复的数. 输入 第一行,两个整数n和m,表示序列 ...

  3. 数据结构与算法 | 二叉树(Binary Tree)

    二叉树(Binary Tree) 二叉树(Binary Tree)是一种树形数据结构,由节点构成,每个节点最多有两个子节点:一个左子节点和一个右子节点. public class TreeNode { ...

  4. "科来杯"第十届山东省大学生网络安全技能大赛决赛复现WP

    从朋友那里得来的附件,感觉题目有意思,简单复现一下 MISC 简单编码 1.题目信息 0122 061 1101011 0172 0122 0105 061 1011010 0127 0154 014 ...

  5. K8S - Jenkins在K8S下的持续集成

    准备nfs网络存储 提前安装好nfs服务 [root@master ~]# yum -y install nfs-utils rpcbind [root@master ~]# systemctl st ...

  6. 深入解析css-笔记

    前言 本文章是根据<深入解析CSS>一书所作的学习笔记,书中的知识点基本都概括在这.希望对您有帮助,另外本博客是通过word笔记文档导入,虽然后续对内容和代码相关进行了一些格式处理,但还是 ...

  7. QPainter和QPainterPath理解

    QPainter和QPainterPath QPainterPath (一)简介 (二)常用函数 1.addEllipse() 2.addPath() 3.addPolygon() 4.addRect ...

  8. Prime Distance 区间筛

    给定 l, r,求出相差最小和相差最大的在l,r范围内相邻的质数 1 < l, r < 2,147,483,647, r - l < = le6 主要思路 : 埃氏筛 因为 r的最小 ...

  9. 格局决定结局,进化还是毁灭,Prompt在其中扮演什么角色

    GPT 时代, Prompt 的价值你们可能不懂 最近, OpenAI 推出了基于 GPT 模型的 GPTs 以及 Agent Stroe 系统,引发广泛关注.业内讨论热点主要集中在吸引用户体验方面. ...

  10. 【MySQL】MySQL中的锁

    全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态. flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新 ...