IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter中StatefulWidget生命周期小记 -> 正文阅读

[移动开发]Flutter中StatefulWidget生命周期小记

执行顺序:createState()函数->initSate()函数->didChangeDependencies()函数->build()函数->deactivate()函数

红色是初始化期函数,黄色是更新期函数,蓝色是销毁期函数

操作顺序:

1.点击"Widget生命周期/页面生命周期"按钮,进入生命周期展示页面

????????结果:[createState()函数,

?????????这里是initSate()函数,

????????didChangeDependencies()函数,

????????这里是build()函数]

????????这四个函数被执行.

2.点击"点我"按钮

? ? ? ? 结果:这里是build()函数

? ? ? ? 再次被执行

3.点击"返回"按钮

? ? ? ? 结果:这里是deactivate()函数

? ? ? ? 被执行

?

参考链接:

1.https://blog.csdn.net/shulianghan/article/details/114305518

2.https://coding.imooc.com/learn/questiondetail/172979.html

完整代码:

import 'package:flutter/material.dart';

///这是一个用StatefulWidget展示Flutter页面生命周期的类

/*
*StatelessWidget 只有createElement()和build()两个生命周期函数*/

/*StatefulWidget生命周期分三种状态
* 1.初始化时期
*   createState();initState();
* 2.更新时期
*   didChangeDependencies();build();didUpdateWidget()
* 3.销毁时期
*   deactivate();dispose();*/
class WidgetLifecycle extends StatefulWidget {
  const WidgetLifecycle({Key? key}) : super(key: key);

  @override
  ///createState()是初始化期的生命周期函数;
  ///创建 StatefulWidget 之后调用的第一个方法 ;
  ///且createState()是每一个StatefulWidget必须重写的方法
  _WidgetLifecycleState my_createState(){
    print("这里是createState()函数");
    return new _WidgetLifecycleState();
  }
  _WidgetLifecycleState createState() => my_createState();

}

class _WidgetLifecycleState extends State<WidgetLifecycle> {
  int _cout = 0;
  ///initState()是创建Widget时调用的构造方法后第一个方法,
  ///执行顺序在createState()之后
  ///类似于Android中的onCreate()/IOS中的viewDidLoad()
  ///通常这个方法用于做初始化的工作,如channel的初始化,监听器的初始化
  @override
  void initState() {
    print("这里是initSate()函数");
    super.initState();
  }

  ///1.didChangeDependencies()在初次构建Widget后,继initState()后立即调用
  ///2.如果StatefulWidget依赖InheritedWidget,那么当前State所依赖的InheritedWidget
  ///中的变量改变时,会被再次调用
  ///InheritedWidget是一个Widget,用于Widget树中高效向下传递,共享数据
  @override
  void didChangeDependencies() {
    print("这里是didChangeDependencies()函数");
    super.didChangeDependencies();
  }

  ///build()是一个一定会被调用的方法,用于实现要呈现的页面内容
  ///执行顺序在didChangeDependencies()函数之后立即调用,
  ///或在setState()函数被调用后
  @override
  Widget build(BuildContext context) {
    print("这里是build()函数");
    return Scaffold(
      appBar: AppBar(
        title: Text("Widget生命周期/页面生命周期"),
        leading: BackButton(),
      ),

      ///Center()是一个约束组件
      body: Center(
        child: Column(
          children: <Widget>[
            ElevatedButton(
              onPressed: (){
                setState(() {
                  _cout++;
                });
              },
              child: Text("点我",
                style: TextStyle(fontSize: 26),),
            ),
            Text(_cout.toString()),
          ],
        ),
      ),
    );
  }

  ///非常用的更新生命周期方法
  ///当父组件被重绘时被调用
  ///didUpdateWidget()携带一个旧组件参数,可以用于与新组件进行对比
  @override
  void didUpdateWidget(covariant WidgetLifecycle oldWidget) {
    print("这里是didUpdateWidget()函数");
    super.didUpdateWidget(oldWidget);
  }

  ///deactivate() 不常用的销毁生命周期方法
  ///组件被移除时候被调用,且在dispose()前进行调用
  @override
  void deactivate() {
    print("这里是deactivate()函数");
    super.deactivate();
  }

  ///dispose() 常用的销毁生命周期方法
  ///用于组件被销毁时候调用
  ///通常资源的释放,监听器的卸载,channel的销毁会在这里执行
  @override
  void dispose() {
    print("这里是deactivate()函数");
    super.dispose();
  }
}

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:34:48  更:2021-07-13 17:37:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 23:50:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码