Flutter MaterialApp

目前在西瓜视频上免费刊登 Flutter 系列教程,每日更新,
欢迎关注接收提醒点击查看提示 各种系列的教程


1 MaterialApp 是什么

MaterialApp是我们使用 Flutter开发中最常用的符合Material Design设计理念的入口Widget。你可以将它类比成为网页中的,且它自带路由、主题色,等功能。

2 案例一

```
import 'package:flutter/material.dart';import 'package:flutter/material.dart';//Flutter程序入口
void main() => runApp(getApp());Widget getApp() {return new MaterialApp(//应用默认所显示的界面 页面home: new Container(color: Colors.grey,),//应用的顶级导航表格,多页面应用 控制页面跳转//routes: ,// 当系统修改语言的时候,会触发å这个回调//onLocaleChanged :// 应用各种 UI 所使用的主题颜色theme: ThemeData.light().copyWith(primaryColor: Colors.grey[850],accentColor: Colors.grey[850],indicatorColor: Colors.white,),);
}```

3 构造参数简述

 this.navigatorKey, // 导航的keythis.home, // 主页this.routes = const <String, WidgetBuilder>{},// 路由this.initialRoute,//初始路由this.onGenerateRoute,//生成路由this.onUnknownRoute,//位置路由this.navigatorObservers = const <NavigatorObserver>[],//导航的观察者this.builder,//widget的构建this.title = '',//设备用于识别用户的应用程序的单行描述。this.color,//背景颜色this.theme,//主题,用ThemeDatathis.locale,//app语言支持this.localizationsDelegates,//多语言代理this.localeResolutionCallback,//this.supportedLocales = const <Locale>[Locale('en', 'US')],//支持的多语言this.debugShowMaterialGrid = false,//显示网格this.showPerformanceOverlay = false,//打开性能监控,覆盖在屏幕最上面this.checkerboardRasterCacheImages = false,this.checkerboardOffscreenLayers = false,this.showSemanticsDebugger = false,//打开一个覆盖图,显示框架报告的可访问性信息 显示边框this.debugShowCheckedModeBanner = true,//右上角显示一个debug的图标
MaterialApp({Key key,// 设备用于为用户识别应用程序的单行描述// 在Android上,标题显示在任务管理器的应用程序快照上方,当用户按下“最近的应用程序”按钮时会显示这些快照。 在iOS上,无法使用此值。 来自应用程序的`Info.plist`的`CFBundleDisplayName`在任何时候都会被引用,否则就会引用`CFBundleName`。要提供初始化的标题,可以用 onGenerateTitle。this.onGenerateTitle,//每次在WidgetsApp构建时都会重新生成this.title = '', this.home, // 应用程序默认路由的小部件,用来定义当前应用打开的时候,所显示的界面this.color, // 在操作系统界面中应用程序使用的主色。this.theme, // 应用程序小部件使用的颜色。this.routes = const <String, WidgetBuilder>{}, // 应用程序的顶级路由表this.navigatorKey, // 在构建导航器时使用的键。this.initialRoute, // 如果构建了导航器,则显示的第一个路由的名称this.onGenerateRoute, // 应用程序导航到指定路由时使用的路由生成器回调this.onUnknownRoute, // 当 onGenerateRoute 无法生成路由(initialRoute除外)时调用this.navigatorObservers = const <NavigatorObserver>[], // 为该应用程序创建的导航器的观察者列表this.builder, // 用于在导航器上面插入小部件,但在由WidgetsApp小部件创建的其他小部件下面插入小部件,或用于完全替换导航器this.onGenerateTitle, // 如果非空,则调用此回调函数来生成应用程序的标题字符串,否则使用标题。this.locale, // 此应用程序本地化小部件的初始区域设置基于此值。this.localizationsDelegates, // 这个应用程序本地化小部件的委托。this.localeListResolutionCallback, // 这个回调负责在应用程序启动时以及用户更改设备的区域设置时选择应用程序的区域设置。this.localeResolutionCallback, // this.supportedLocales = const <Locale>[Locale('en', 'US')], // 此应用程序已本地化的地区列表 this.debugShowMaterialGrid = false, // 打开绘制基线网格材质应用程序的网格纸覆盖this.showPerformanceOverlay = false, // 打开性能叠加this.checkerboardRasterCacheImages = false, // 打开栅格缓存图像的棋盘格this.checkerboardOffscreenLayers = false, // 打开渲染到屏幕外位图的图层的棋盘格this.showSemanticsDebugger = false, // 打开显示框架报告的可访问性信息的覆盖this.debugShowCheckedModeBanner = true, // 在选中模式下打开一个小的“DEBUG”横幅,表示应用程序处于选中模式
})

在Flutter中使用ThemeData来在应用中共享颜色和字体样式,Theme有两种:全局Theme和局部Theme。 全局Theme是由应用程序根MaterialApp创建的Theme ,

brightness

其中ThemeData的brightness,是一个Brightness类型,用来配置应用程序的整体主题亮度。在不使用主色(primaryColor)或强调色(accentColor)时,当选择Dark模式时,画布、卡片和原色都较暗;当选择light模式时,画布和卡片的颜色是明亮的,原色的暗度根据原色亮度变化。当亮度较暗时,原色(primaryColor)与卡片和画布颜色的对比度较差;当亮度较暗时,用白色或亮蓝色来对比。

brightness主题设置较为关键,它是设置状态栏图标与字体颜色的。

  1. brightness: Brightness.dark 状态栏图标与字体颜色为白色。
  2. brightness:
    Brightness.light 状态栏图标与字体颜色为黑色。

primaryColor

其中primaryColor是Color类型,用来配置App主要部分的背景色(ToolBar,Tabbar等);primaryColorBrightness是Brightness类型,描述primaryColor的亮度,用于确设定在primaryColor上部的文本和图标颜色(如:工具栏文本(toolbar text)),accentColor是Color类型,用来配置前景色、强调色等(按钮、文本、覆盖边缘效果等)

iconTheme

其中iconTheme:设置AppBar中图标icon的颜色,AppBar中icon的颜色会根据primaryColor的改变来确定自身的颜色,但这里可以在iconTheme中指定icon的颜色。

ButtonTheme
ButtonTheme用于设置Button类控件的样式,其中textTheme表示按钮文本的样式,如默认情况ButtonTextTheme.normal(按钮文本的颜色是黑色或者白色,依赖于ThemeData.brightness),当修改为ButtonTextTheme.accent时,按钮文本的颜色取用ThemeData.accentColor,layoutBehavior用来设置Button的尺寸 …

  • Flutter组件精讲【01】 MateriaApp使用概述
  • Flutter组件精讲【02】MaterialApp组件的基本使用
  • Flutter组件精讲【03】 MateriaApp组件路由routes配制
  • Flutter组件精讲【04】 MateriaApp配置默认启动页面
  • Flutter组件精讲【05】 MateriaApp之页面的跳转
  • Flutter组件精讲【06】MaterialApp 组件配置 404 页面-01
  • Flutter组件精讲【07】MaterialApp 组件配置 404 页面-02

完毕

Flutter MaterialApp概述以及主题配置概述相关推荐

  1. sharepoint搭建文档服务器,SharePoint 2013 安装和配置概述

    SharePoint 2013 安装和配置概述 03/21/2018 本文内容 **上一次修改主题:**2017-08-23 **摘要:**了解如何在场中安装和配置 SharePoint Server ...

  2. Spring-Spring配置概述

    Spring容器高层视图 成功启动Spring容器的三个必要条件 Bean配置信息 基于XML的配置 Schema的配置格式 Bean的基本配置 装载一个Bean Bean的命名 总结 导读 Spri ...

  3. 大数据项目之电商数仓、日志采集Flume配置概述、日志采集Flume配置实操

    文章目录 4. 用户行为数据采集模块 4.3 日志采集Flume 4.3.2 日志采集Flume配置概述 4.3.2.1 TailDirSource 4.3.2.2 KafkaChannel 4.3. ...

  4. BGP概述及基础配置

    BGP概述及基础配置 一.BPG基本概述 1.1.BGP路由协议的特点 1.2.BGP分类: 1.3.BGP的路由器号(Router-ID): 二.BGP的基本参数内容 2.1.BGP的五种报文 2. ...

  5. Drupal 7 主题模板概述

    Drupal是一个开源的内容管理系统(CMS) 平台,它是用PHP写成的.主要用于构造提供多种功能和服务的动态网站,这些功能包括用户管理(UserAdministration).发布工作流 (Publ ...

  6. Flutter MaterialApp和Scaffold

    一.MaterialApp 为了继承主题数据,widget需要位于MaterialApp内才能正常显示, 因此我们使用MaterialApp来运行该应用.所以MaterialApp是Flutter  ...

  7. 一、01【Java概述】之Java概述

    今天的博客主题 Java概述 -->Java概述 Java 一种高级的计算机语言 Java的前身oka语言,随着社会的发展,改名为了Java Java之父 James Gosling(詹姆斯·高 ...

  8. SSM_Mybatis_Day01(快速入门、映射文件概述、核心配置文件概述、相应API、代理开发方式、映射文件深入、数据类型的映射、列名和属性名不一致的时候的处理)

    SSM_Mybatis_Day01(快速入门.映射文件概述.核心配置文件概述.相应API.代理开发方式.映射文件深入.数据类型的映射.列名和属性名不一致的时候的处理) 1. Mybatis mybat ...

  9. [转]Oh My Zsh,安装,主题配置

    https://swp-song.com/2017/08/20/Tools/OhMyZsh%E5%AE%89%E8%A3%85%E5%92%8C%E4%B8%BB%E9%A2%98%E9%85%8D% ...

最新文章

  1. gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
  2. boost::fusion::fused用法的测试程序
  3. cleaning selected projects has encountered a problem errors occurred during build
  4. Java面向对象(14)--包装类的使用
  5. es6严格模式需要注意的地方
  6. TurnipBit开发板DIY呼吸的吃豆人教程实例
  7. Spring Cloud云架构 - commonservice-sso服务搭建(一)
  8. nextcloud如何填写数据库_NextCloud安装使用心得记录
  9. oracle里面的锁,基于oracle中锁的深入理解
  10. 同义词(近义词)算法总结(附代码)
  11. 关于两仪、三才、四象、五行、六合、七星、八卦、九宫、十方、中医的现代科学猜想全解
  12. 教你自己搭建一个ip池(绝对超好用!!!!)
  13. CString与char之间的转换
  14. C++使用类和对象(谭浩强9.8-9.14)
  15. 史上最全!大数据开源框架技术扫盲
  16. CLUSTER 05: 块存储应用案例 分布式文件系统 对象存储
  17. 企业文化如何推动绩效?
  18. 【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
  19. 超级码力在线编程大赛初赛 第2场 【题解】
  20. MySQL之SQL基础

热门文章

  1. AAAI 2020 | 腾讯优图10篇论文入选,含速算识别、视频识别等主题
  2. ImageNet又被Long-Short Transformer 霸榜!
  3. 内卷到逆天!机器学习领域不读PhD,我配不配找工作?
  4. PyTorch | torch.zeros()如何使用?torch.zeros使用方法 | torch.zeros()例子
  5. 收藏 | 机器学习中需要了解的 5 种采样方法
  6. 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用
  7. echarts 三环圆环_echarts实现环形进度图
  8. 猫眼java开发工资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
  9. python 作用域从大到小排序_Python 内置函数、作用域、闭包、递归
  10. Pinyin4j 的使用 Pinyin4jUtils工具类