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 )是不可变的,这意味着它
们的属性不能改 ,所有的值都是最终的。