1.入口程序
Flutter项目下的/lib目录下的main.dart文件,main()方法就是程序的入口
2.Material Design设计
默认的flutter程序,使用的是Google Material设计 return MaterialApp()
import 'package:flutter/material.dart';
这个包是 flutter实现 Material Design 的base包, 里面有Text、image、icon、Row、Column、 Decoration 、animation等组件
3.flutter主题
主题有两种方式:全局主题,或使用 Theme 来定义应用程序局部的颜色和字体样式。事实上,
全局主题只是由应用程序根 MaterialApp 创建的主题(Theme)
定义一个主题后,就可以在我们自己的 Widget 使用它, Flutter 提供的 Material
Widgets 将使用主题为 AppBars Buttons Checkbox 等设置背景颜色和字体样式。
3.1全局主题
创建主题的方法是将 ThemeData 提供给 MaterialApp 构造函数,这样就可以在整个应
用程序中共享包含颜色和字体样式的主题 。
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
3.2局部主题
如果想在应用程序的某一部分使用特殊的颜色,那么就需要覆盖全局的主题。有两种方法可以解决这个问题: 创建特有的主题数据或扩展父主题。
1. 创建特有的主题数据
实例化一个 hemeData 井将其传递给 heme 对象,代码如下:
new Theme (
//创建一个特有的主题数据
data: new ThemeData(
accentColor: Colors.yellow,
),
child: new FloatingActionButton(
onPressed : () {} ,
child: new Icon(Icons.add),
),
);
2.扩展父主题
扩展父主题时无须覆盖所有的主题属性,可以通过使用 copyWith 方法来实现,代
码如下:
new Theme(
// 覆盖 accentColor Colors.yellow
data: Theme.of(context).copyWith(accentColor: Colors.yellow),
child: new FloatingActionButton(
onPressed: null,
child: new Icon (Icons.add) ,
),
);
3.3使用主题
主题定义好后就可以使用它。首先,函数Theme.of( context)可以通过上下文来获取
主题 ,方法是查找最近的主题,如找不到就会找这个应用的主题。
4.无状态与有状态组件
无状态组件 Stateless Widget )是不可变的,这意味着它
们的属性不能改 ,所有的值都是最终的。