Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter —生命周期

Flutter —生命周期

原创
作者头像
CatEatFish
修改于 2020-07-09 06:24:31
修改于 2020-07-09 06:24:31
1.4K0
举报
文章被收录于专栏:干活分享干活分享

##Flutter 中的生命周期

flutter 也有自己的生命周期,但跟 Android 比起来就显得弱化了,官方定义的生命周期只有五个,实际应用中还需要WidgetsBindingObserver接口的配合,才能像android中那样 “为所欲为”。

  • initState() 表示当前 State 将和一个 BuildContext 产生关联,但是此时BuildContext 没有完全装载完成,如果你需要在该方法中获取 BuildContext ,可以 new Future.delayed(const Duration(seconds: 0, (){//context}); 一下。
  • didChangeDependencies() 在 initState() 之后调用,当 State 对象的依赖关系发生变化时,该方法被调用,初始化时也会调用。
  • deactivate() 当 State 被暂时从视图树中移除时,会调用这个方法,同时页面切换时,也会调用。
  • dispose() Widget 销毁了,在调用这个方法之前,总会先调用 deactivate()。
  • didUpdateWidge 当 widget 状态发生变化时,会调用。
flutter - 生命周期
flutter - 生命周期
常见业务场景:

1.Widget A打开Widget B: 调用 Navigator.push(B)

  • B构造函数--->B initState--->B didChangeDependencies--->B build--->A deactivate--->A didChangeDependencies.

2.Widget B退出: Navigator.pop

  • A deactivate--->A didChangeDependencies--->A build--->B deactivate--->B dispose

可以看出, Flutter打开、关闭Widget时跟安卓、iOS的时序一样, 都是先处理即将显示的界面。

####activity生命周期和Flutter对应关系:

Flutter提供了WidgetsBindingObserver来监听AppLifecycleState, 而AppLifecycleState有4种状态:

1、 resumed 界面可见, 同安卓的onResume。

2、inactive界面退到后台或弹出对话框情况下, 即失去了焦点但仍可以执行drawframe回调;同安卓的onPause;

3、paused应用挂起,比如退到后台,失去了焦点且不会收到 drawframe 回调;同安卓的onStop;

4、suspending, iOS中没用,安卓里就是挂起,不会再执行 drawframe 回调;

下面是生命周期:

1、初次打开widget时,不执行AppLifecycleState的回调;

2、按home键或Power键, AppLifecycleState inactive---->AppLifecycleState pause

3、从后台到前台:AppLifecycleState inactive--->ApplifecycleState resumed

4、back键退出应用: AppLifecycleState inactive--->AppLifecycleState paused

代码语言:txt
AI代码解释
复制
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
  AppLifecycleState _lastLifecycleState;
 
  void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this);
  }
 
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }
 
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    print(state);
  }
 
  ...
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter--Flutter中Widget、App的生命周期
  在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务。同时,各个页面的生命周期也很重要,每个页面消失时要做一些内存清理、计时器清除、通知清除等操作。所以,本文主要就是学习一下在flutter开发App的时候,如何去怼App以及各个页面的生命周期进行监听和回调。
mukekeheart
2021/02/02
3.2K0
Flutter State生命周期
前面说过了StatefullWidget,这节我们来说说State的生命周期,这在flutter开发中是非常重要的。
用户1974410
2022/09/20
8730
Flutter State生命周期
提到生命周期,我们是在说什么?
Widget是不可变的,更新则意味着销毁+重建。StatelessWidget是不可变的,一旦创建则无需更新;对于StatefulWidget来说,在State类中调用setState方法更新数据,会触发视图的销毁和重建,也将间接触发每个子Widget的销毁和重建。
拉维
2019/08/12
1.7K0
提到生命周期,我们是在说什么?
Flutter 生命周期详解
Flutter 跟 Android 的 Activity、iOS 的 ViewController 一样都拥有自己的生命周期。在 Flutter 中几乎所有的对象都是一个 Widget,其中 Widget 又分为 StatelessWidget(即:无状态的 Widget) 和 StatefulWidget (即:有状态的 Widget),这里所说的 Flutter 的生命周期其实就是讲 StatefulWidget 的生命周期,它存在于 framework.dart 的 State 类中。
子晋
2022/01/19
1.4K0
Flutter 生命周期详解
【Flutter 专题】54 图解 Flutter 基本生命周期
和尚使用 Flutter 这么长时间,并没有认真研究过 Flutter 的生命周期,今天和尚分几个场景学习一下 Flutter 的生命周期;
阿策小和尚
2019/08/12
1.5K0
【Flutter 专题】54 图解 Flutter 基本生命周期
Flutter 中与平台相关的生命周期
此篇文章所说的生命周期与 StatefulWidget 组件的生命周期是不同的,这里平台相关的生命周期指的是特定平台相关操作所产生的生命周期,比如 Android 中 App 退到后台后的onPause等。
老孟Flutter
2021/01/13
7430
【Flutter】Flutter 应用生命周期 ( 前台状态 resumed | 后台状态 paused | 非活动状态 inactive | 组件分离状态 detached )
Flutter 应用生命周期状态枚举 : 该枚举中四个生命周期状态 , 源码注释中详细说明了每个状态的用法 ;
韩曙亮
2023/03/28
1.8K0
【Flutter】Flutter 应用生命周期 ( 前台状态 resumed | 后台状态 paused | 非活动状态 inactive | 组件分离状态 detached  )
Flutter(七)--Widget的生命周期(周期方法)Flutter(七)--Widget的生命周期(周期方法)
言归正传现在来说说Fluuter中Widget的生命周期都包含哪些方法,这些方法都是在什么时机被调用的。 这是常见的方法,我通过一个表格来展示,展示顺序也是调用顺序:
用户8893176
2021/08/09
1K0
Flutter(七)--Widget的生命周期(周期方法)Flutter(七)--Widget的生命周期(周期方法)
Stateful 组件的生命周期​
此篇文章介绍 StatefulWidget 组件的生命周期, StatefulWidget 组件的生命周期时非常重要的知识点,就像 Android 中 Activity 的生命周期一样,不仅在以后的工作中经常用到,面试也会经常被问到。
老孟Flutter
2020/12/31
1K0
Flutter
在Flutter中和Widgets一起协同工作的还有另外两个伙伴:Elements和RenderObjects;由于它们都是有着树形结构,所以经常会称它们为三棵树。
愤怒的小鸟
2021/10/26
2K0
Flutter之 State 生命周期
  State 的生命周期,指的是在用户参与的情况下,其关联的 Widget 所经历的,从创建到显示,再到更新最后到停止,直至销毁等各个阶段
不会飞的小鸟
2019/09/16
1.3K0
Flutter之 State 生命周期
【Flutter】Flutter 页面生命周期 ( 初始化期 | createState | initState | 更新期 | build | 销毁期 | dispose)
Flutter 页面生命周期就是 Flutter 页面组件 Widget 的生命周期 ;
韩曙亮
2023/03/28
4.7K0
【Flutter】Flutter 页面生命周期 ( 初始化期 | createState | initState | 更新期 | build | 销毁期 | dispose)
【Flutter】348- 写给前端工程师的 Flutter 教程
| 导语 最爱折腾的就是前端工程师了,从 jQuery 折腾到 AngularJs,再折腾到 Vue、React。最爱跨屏的也是前端工程师,从 phonegap,折腾到 React Native,这不又折腾到了 Flutter。
pingan8787
2019/09/17
1.1K0
【Flutter】348- 写给前端工程师的 Flutter 教程
Flutter | 基础Widget
在 Fluter 中,几乎所有的都是一个 widget ,与原生开发不同的是,widget 的范围更加广阔,他不仅可以表示 UI 元素,也可以表示一些功能的组件,如手势检测的 widget,用于主题数据传递的 Theme 等等。所以,在大多数时候,可以认为 widget 就是一个控件,不必纠结于概念
345
2022/02/11
1.3K0
Flutter | 基础Widget
flutter系列之:用来管理复杂状态的State详解
Flutter的基础是widget,根据是否需要跟用户进行交互,widget则可以分为StatelessWidget和StatefulWidget。StatelessWidget只能根据传入的状态进行简单的初始化widget,如果要实现跟用户交互这种复杂的功能,则需要用到StatefulWidget。
程序那些事
2022/08/22
4880
StatefulWidget与State
首先来看下StatefulWidget,它是一个抽象类,当然它十分的简单。它和StatelessWidget一样它只有两个方法,都有一个createElement的方法,但是和StatelessWidget不同的是,StatelessWidget可以直接通过build方法来构建Widget,但是StatefulWidget没有build方法,所以它只能使用State的build来构建Widget。
flyou
2020/05/29
1.5K0
Flutter BaseWidget 实现onResume、onPause()
最近用Flutter开发的项目算是完成了开发到上线第一阶段了。任何一个项目开始了,若想追求的是更好,那么就需要下功夫对项目用户体验和代码效率深入的研究了。作为用户和产品经理、老板、UI、不懂技术的其他人员看到的产品只是表面的。
全栈程序员站长
2022/08/22
8670
Flutter BaseWidget 实现onResume、onPause()
Flutter跨平台移动端开发丨Widget、Element、State、状态管理
widget 的主要工作是通过实现 build 函数 来构建自身。一个 widget 通常由一些低级别的 widget 组成,flutter 框架依次的构建这些低级别的 widget,直到构建到最底层的子 widget 时,它会计算并描述 widget 的几何形状
码脑
2019/05/25
1.9K0
Flutter Widget源码解析及实战
这是一篇投稿文章,近日,国内外都掀起了Flutter的学习热潮。本文作者分享了自己在学习Flutter Widget时的心得与体会。
岛哥的质量效能笔记
2021/08/18
2.1K0
Flutter Widget源码解析及实战
当 Flutter 遇见 Web,会有怎样的秘密 ?
本文由 IMWeb 首发于 IMWeb 社区网站 imweb.io。点击阅读原文查看 IMWeb 社区更多精彩文章。 前言 腾讯 OED 的客户端团队在 2019 年上半年 ,就已经把 Flutter 落地到 企鹅辅导 的业务中了。今年我们又一起去上海参加了 2019 年谷歌开发者大会,遇见了更多的 Flutter 开发者,这次体验比第一次去的时候感觉熟悉了很多。希望未来有机会把他们邀请来深圳,进行一些 Flutter 的技术分享。此次开发者大会又恰逢 Flutter to Web 也已经正式合入 Mas
用户1097444
2022/06/29
7590
当 Flutter 遇见 Web,会有怎样的秘密 ?
推荐阅读
相关推荐
Flutter--Flutter中Widget、App的生命周期
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档