Flutter生命周期

                           Flutter生命周期  :

和其他框架中视图比如Android的Activity一样,flutter中的视图Widget也存在生命周期,生命周期的回调函数体现在了State上面,理解flutter的生命周期,对我们写一个合理的控件至关重要。组件State生命周期整理如下:

 initState,   didChangeDependencies,   bulid,   reassemble,   didUpdateWidget,   deactivate,   dispose,

其实总结下来大致可以分为三个阶段,初始化(插入渲染树),状态改变(在渲染树中存在),销毁(从渲染树中移除)

生命周期

initstate:

其实这个函数不属于生命周期,因为这个时候state的widget属性还是空的,如果在构造函数中访问widget属性是行不通的,但是构造函数必然是第一个要调用的。当插入渲染树的时候调用,这个函数在生命周期中值调用一次,这里可以做一些初始化工作,比如初始化state的变量。

didChangeDependencies:

这个函数会紧跟在initState之后调用,并且可以调用BuildContext.inherFromWidgetOfExactType,那么BuildContext.inheritFromWidgetOfExactType的使用场景是什么呢?最经典的应用场景是?

跨组件拿到数据

didUpdateWidget

当组件状态改变的时候回调用didUpdateWidget,比如调用了setState,实现上这里flutter框架回创建一个新的Widget,绑定State,并在这个函数中传递老的Widget,这个函数一般用于比较新、老Widget,看看那些属性改变了,并对State做出一些调整。需要注意的是,涉及controller的变更,需要在这个函数中移除老的controller的监听,并才创建新的controller监听。比如tabbar:

deactivate

在dispose之前,会调用这个函数。

dispose

一旦到这个阶段,组件就要被销毁了,这个函数一般是移除监听,清理环境。  

概念认识

1,State

1,widget build时被读取

2,在widget生命周期中被改变,当state被改变时,可以手动调用setstate方法通知flutter状态发生改变,fromework在收到消息后,会重新调用build方法重新构建widget树,从而达到更新UI的目的。

两个常用属性:

1,widget state只会在第一次插入到树种时被创建。,

2,Context它是buildcontext 一个实例,每个widget都有自己的context对象。

2,Text

maxLines、overflow:指定文本显示的最大行数,默认情况下,文本是自动折行的,如果指定此参数,则文本最多不会超过指定的行。如果有多余的文本,可以通过overflow来指定截断方式,默认是直接截断,本例中指定的截断方式TextOverflow.ellipsis,它会将多余文本截断后以省略符“...”表示;TextOverflow的其它截断方式请参考SDK文档。

textScaleFactor:代表文本相对于当前字体大小的缩放因子,相对于去设置文本的样式style属性的fontSize,它是调整字体大小的一个快捷方式。该属性的默认值可以通过MediaQueryData.textScaleFactor获得,如果没有MediaQuery,那么会默认值将为1.0。

TextSpan : Text其实就是RichText的一个包装,而RichText是可以显示多种样式(富文本)的widget。_tapRecognizer,它是点击链接后的一个处理器(代码已省略),关于手势识别的更多内容我们将在后面单独介绍。

3,Button

通过定义的属性自定义按钮
注意material design中配有很多阴影

4,图片和Icon

ImageProvider 是一个抽象类,主要定义了图片数据获取的接口load(),从不同的数据源获取图片需要实现不同的ImageProvider ,如AssetImage是实现了从Asset中加载图片的ImageProvider,而NetworkImage实现了从网络加载图片ImageProvider

注意Fit选项
Material Design所有图标可以在其官网查看:https://material.io/tools/icons/  
字体图标

5,单选框和复选框

无法自定义,其他没有什么

6,输入框和表单

其他属性
textfield获取输入内容
表单验证

7,线性布局Row、Colum

注意一下排列顺序

8,弹性布局Flex

Flex是row和column的父类
spacer的功能是制定比例的空间
实际上它是一个expanded一个包装

9,流式布局 wrap ,Flow

wrap流式布局
很少使用,一般注意Wrap是否可以

10,层叠布局 Stack Postioned  就像安卓中的Framelayout 允许堆叠

注意positioned属性报错

11,Padding

注意edgeinset属性

12,布局限制类容器ConstrainedBox和SizedBox


注意限制条件
取较大值

13,DecoratedBox

绘制一个装饰的decoration

14,Transform变换

Marix变换
rotate变换会影响子widget的位置和大小

15,container

组合大杂烩

16,Scaffold ,tabBar,底部导航

注意Physice

17,SingleChildScrollview

注意primary

18,Listview

listview 无限加载

19,Gridview

注意gridDelegate
Pub上有一个包“flutter_staggered_grid_view” ,它实现了一个交错GridView的布局模型,可以很轻松的实现这种布局,详情读者可以自行了解。

20,滚动监听以及控制ScrollController

滚动监听
位置恢复
滚动监听发送通知

21,导航返回WillPopScope

导航

22,数据共享

注意和nitification相反

23,主题

熟悉themedata数据
局部主题可以替换全局主题

23,Pointer事件处理

flutter中使用listener监听原始触摸事件
枚举类
absorb和ignore不同点

24,手势识别

点击,双击,长按
同时监听ontap和ondoubletap会有延时,只有ontap没有延时

25,事件总线

事件总线
全局事件总线使用

26,Notification

Notification 会沿着当前节点向上传递,多有父节点都可以通过NotificationListener来监听通知。这种由子向父的传递为通知冒泡。

dispatch

27,通过组合现有Widget实现自定义

require标注

28,CustomPaint与Canvas

custompaint属性
注意
两个参数
配置画笔属性
自绘性能

29,Http请求

五步请求
注意生效的区域
安全问题
认证
代理
证书验证

30,网络操作 Dio http库

dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等。

dio
dio内部
分块下载

31,WebScoket

websockert


webxocket


Flutter中有socket

32,Json Model

转化model

33,Package

dart插件

34,Dart线程模型以及异常捕获

report错误
最终异常上报机制

35,调试Flutter应用

debugger声明
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 常见操作:http://www.runoob.com/go/go-map.html 创建Map 赋值 遍历Map ...
    tonyemail_st阅读 359评论 0 0
  • 麦片和酸奶组合有那么难么,新西兰做到了,跟咖啡伴侣一个道理,想得到就做得到。可能中国人这方面需求不迫切,也可能新西...
    欣爷论产品阅读 342评论 0 0
  • 恨己今生不得屑, 未尝共进一烛倾。 春风只润尘间物, 秋月不照天际流。 彼时长卷难孝义, 懒于虚幻惰于习。 我纵殒...
    刘斩之阅读 369评论 0 0