1.Flutter项目的目录结构
我们着重需要注意一下几个文件夹,其他的暂时不用理会
android:android平台相关代码
ios:ios平台相关代码
lib:flutter相关代码,我们主要编写的代码就在这个文件夹
test:用于存放测试代码
pubspec.yaml:配置文件,一般存放一些第三方的依赖。
2.分析
(1).导入包:
import'package:flutter/material.dart';
此行代码作用是导入了Material UI组件库。Material是一种标准的移动端和web端的视觉设计语言, Flutter默认提供了一套丰富的Material风格的UI组件。
(2).应用入口:
void main() => runApp(new MyApp());
(3).应用结构:
MyApp类代表Flutter应用,它继承了StatelessWidget类,这也就意味着应用本身也是一个widget。
在Flutter中,大多数东西都是widget,包括对齐(alignment)、填充(padding)和布局(layout)。
Flutter在构建页面时,会调用组件的build方法,widget的主要工作是提供一个build()方法来描述如何构建UI界面(通常是通过组合、拼装其它基础widget)。
MaterialApp是Material库中提供的Flutter APP框架,通过它可以设置应用的名称、主题、语言、首页及路由列表等。MaterialApp也是一个widget。
Scaffold是Material库中提供的页面脚手架,它包含导航栏和Body以及FloatingActionButton(如果需要的话)。 本书后面示例中,路由默认都是通过Scaffold创建。
home为Flutter应用的首页,它也是一个widget。
(4).首页
MyHomePage是应用的首页,它继承自StatefulWidget类,表示它是一个有状态的widget(Stateful widget)。现在,我们可以简单认为Stateful widget 和Stateless widget有两点不同:
Stateful widget可以拥有状态,这些状态在widget生命周期中是可以变的,而Stateless widget是不可变的。
Stateful widget至少由两个类组成:
一个StatefulWidget类。
一个 State类;StatefulWidget类本身是不变的,但是 State类中持有的状态在widget生命周期中可能会发生变化。
为了开发的灵活性,我们一般将build()方法放在State中,这样的话,构建过程则可以直接访问状态,这样会很方便。
网友评论