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. Go语言系列——21-Go协程、22-信道(channel)、23-缓冲信道和工作池、24-Select、25-Mutex、26-结构体取代类、27-组合取代继承、多态、 29-Defer、错误处理

    文章目录 21-Go协程 Go 协程是什么? Go 协程相比于线程的优势 如何启动一个 Go 协程? 启动多个 Go 协程 22-信道(channel) 什么是信道? 信道的声明 通过信道进行发送和接 ...

  2. android图片缩放双击旋转效果

    需要jar源码的请留言吧. 部分源码    demo下载地址 package uk.co.senab.photoview.sample; import android.app.ListActivity ...

  3. 重写equals方法的注意事项

    重写equals方法的注意事项   一. 在重写equals方法时,要注意满足离散数学上的特性1   自反性:对任意引用值X,x.equals(x)的返回值一定为true.2   对称性:对于任何引用 ...

  4. visio 2010 kit tools

    Getting Office License Configuration Information.---------------------------------------Backing Up L ...

  5. 探究——C# .net 代码混淆/加壳

    背景: 保密. 过程: 先查询一下常见的加壳工具: DotFuscator,官方自带,据说免费版混淆程度不高 Virbox Protector,很好很优秀,但是收费 NET Reactor,可能会被识 ...

  6. 8.12 dp模拟赛总结

    考场概况: 开考发现题目竟然不保证按难度顺序排序QAQ 正序开题, \(T1\) 显然是数位 \(dp\) 然而没学过不会写,顺手打了 \(30pts\) 暴力走人. \(T2\) 期望 \(dp\) ...

  7. 云端golang开发,无需本地配置,能上网就能开发和运行

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 需求 学习golang的时候,需要一个IDE,还需要一 ...

  8. 不可复制的PDF转成双层可复制PDF

    有些PDF是通过扫描或者虚拟打印机生成的,这些PDF不可复制里边的内容 市面上的工具一般都是收费或者有水印,所以就萌生了自己搞一个的想法: 使用了以下三个开源库 PdfiumViewer PDF预览及 ...

  9. animate.css 动画库的下载与使用

    作者:WangMin 格言:努力做好自己喜欢的每一件事 animate.css是什么? animate.css 是一个有趣,酷炫的,跨浏览器的动画库,里面包含了许多常用的css动画.你可以将它用于你的 ...

  10. Null return value from advice does not match primitive return type for

    1.org.springframework.aop.AopInvocationException:Null return value from advice does not match primit ...