前提需要了解安卓开发,及AS工具。并已成功创建运行flutter项目(可参考:windows 平台下 使用Android Studio 搭建 Flutter)
一、项目结构
android:原生工程
ios:ios工程
lib:flutter代码
着重介绍以下文件:
1.1 pubspec.yaml
dependencies://依赖的库 flutter: sdk: flutter http: ^0.13.4 english_words: ^4.0.0 flutter: uses-material-design: true//支持Material风格 assets://资源 - assets/images/ic_launcher.png
1.2 android/app/build.gradle
为了配置方便,一目了然,建议修改以下地方
1.3 入口
当运行时,lib中的文件是如何与android工程关联起来的呢?启动项配置如下:
可更换启动文件
1.3 安卓启动页
android/app/src/main/res/drawable/launch_background.xml
二、Widget介绍
在介绍 Widget 之前,我们需要了解 flutter 能干什么?
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。
注意是移动UI框架,但是它也可以做网络通讯、数据存储等。
既然是UI框架,就会有页面元素(文本、图片、按钮。。。),他们都可以称为:Widget。正如API所述:
Describes the configuration for an [Element].
Widgets是flutter框架的核心。
2.1 widget分类
StatelessWidget
Stateless widgets 是不可变的, 这意味着它们的属性不能改变——所有的值都是最终的。
如果无状态Widget里面有子Widget,并且子Widget是有状态的,则子Widget的内容是可以通过setState来更改的。无状态Widget影响的仅仅是自己是无状态的,不回影响他的父Widget和子Widget。
StatefulWidget
Stateful widgets 持有的状态可能在widget生命周期中发生变化。
创建一个有状态的widget需要进行以下操作:
要创建一个自定义有状态widget,需创建两个类:StatefulWidget和State。
我们要定义一个widget类,继承自StatefulWidget。
子State,包含该widget状态并定义该widget build()方法的类,它继承自State。
状态对象包含widget的状态和build() 方法。
当widget的状态改变时,状态对象调用setState(),告诉框架重绘widget
StatelessWidget
Base class for widgets that efficiently propagate information down the tree.