当前位置: 首页 > news >正文

做电商网站的公司起名大全文库

做电商网站的,公司起名大全文库,icp备案查询,如何做像淘宝一样的网站Flutter Widget Life Cycle 组件生命周期 视频 前言 了解 widget 生命周期,对我们开发组件还是很重要的。 今天会把无状态、有状态组件的几个生命周期函数一起过下。 原文 https://ducafecat.com/blog/flutter-widget-life-cycle 参考 https://api.flutter.dev/f…

Flutter Widget Life Cycle 组件生命周期

视频

前言

了解 widget 生命周期,对我们开发组件还是很重要的。

今天会把无状态、有状态组件的几个生命周期函数一起过下。

原文 https://ducafecat.com/blog/flutter-widget-life-cycle

参考

https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html

https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html

Stateless

无状态组件比较简单就是一个 build 函数,每次外部新状态压入,进行调用。

class TitleWidget extends StatelessWidget {
  const TitleWidget({super.key, required this.title});

  final String title;

  @override
  Widget build(BuildContext context) {
    return Text(title);
  }
}

步骤

createState 创建状态

当您创建一个statefulWidget时,这将自动创建。

  @override
  State<CounterWidget> createState() => _CounterWidgetState();

initState 初始化状态

在小部件创建之前和构建方法之前调用

一般用来初始状态数据

  int _counter = 0;

  @override
  void initState() {
    print('initState');
    super.initState();
    _counter = 10;
  }

didChangeDependencies 依赖改变

当每个依赖项更改此状态时,调用此方法

在构建小部件的第一次调用initState()之后,也可以立即调用它。

  @override
  void didUpdateWidget(covariant CounterWidget oldWidget) {
    super.didUpdateWidget(oldWidget);
    print('didUpdateWidget');
  }

deactivate 停用

当小部件暂时从小部件树中移除时,将调用此方法。

  @override
  void deactivate() {
    print('deactivate');
    super.deactivate();
  }

dispose 释放资源

当小部件从小部件树中永久移除时

  @override
  void dispose() {
    print('dispose');
    super.dispose();
  }

完整代码

// ignore_for_file: avoid_print

import 'package:flutter/material.dart';

class CounterWidget extends StatefulWidget {
  const CounterWidget({super.key, required this.title});

  final String title;

  // 1. 创建状态
  @override
  State<CounterWidget> createState() => _CounterWidgetState();
}

class _CounterWidgetState extends State<CounterWidget{
  int _counter = 0;

  // 2. 初始化状态
  // 在小部件创建之前和构建方法之前调用
  @override
  void initState() {
    print('initState');
    super.initState();
    _counter = 10;
  }

  // 3. 当每个依赖项更改此状态时,调用此方法
  // 在构建小部件的第一次调用initState()之后,也可以立即调用它。
  @override
  void didChangeDependencies() {
    print('didChangeDependencies');
    super.didChangeDependencies();
  }

  // 4. 当小部件重新构建时,将调用此方法。
  // 这个用于取消订阅在initState()中订阅的旧对象,
  // 并在更新的小部件配置需要替换对象时订阅新对象。
  @override
  void didUpdateWidget(covariant CounterWidget oldWidget) {
    super.didUpdateWidget(oldWidget);
    print('didUpdateWidget');
  }

  // 5. 停用
  // 当小部件暂时从小部件树中移除时,将调用此方法。
  @override
  void deactivate() {
    print('deactivate');
    super.deactivate();
  }

  // 6. 释放资源
  // 当小部件从小部件树中永久移除时
  @override
  void dispose() {
    print('dispose');
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    print('build');

    return Column(
      children: [
        // 标题
        Text(widget.title),

        // 计数
        ElevatedButton(
          onPressed: () {
            setState(() {
              _counter++;
            });
          },
          child: Text('counter > $_counter'),
        ),
      ],
    );
  }
}

代码

https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_application_widget_life_cycle

小结

了解小部件的生命周期非常重要,这样你就可以编写高效且节省内存的代码。通过了解生命周期,你可以避免创建不必要的对象和资源。

  • 尽可能使用无状态小部件。无状态小部件比有状态小部件更高效和节省内存。

  • 只有在需要更新小部件的状态时才使用有状态小部件。

  • 尽量避免不必要地调用 setState() 。调用 setState() 会导致 build() 方法再次被调用,这可能会造成额外的开销。

  • 当您的小部件不再需要时,请处理掉它们使用的任何资源。这将有助于防止内存泄漏。

感谢阅读本文

如果我有什么错?请在评论中让我知道。我很乐意改进。


© 猫哥 ducafecat.com

end

本文由 mdnice 多平台发布

http://www.yayakq.cn/news/96326/

相关文章:

  • 羊肉口报关做网站搜索引擎优化的主要策略
  • ui设计35岁就被淘汰了吗上海关键词优化方法
  • 免费医疗网站模板免备案域名购买网站
  • 网站开发实践研究报告中国建设教育业协会网站
  • 深圳建立网站的公司山东住房建设厅官网站首页
  • 网站管理员怎样管理自己有网站怎么做点卡
  • 北京网站关键词排名营销手段有哪些
  • 建筑贴图素材网站公司制作网站流程
  • 做企业网站需要多久免费wordpress主题内容怎么改
  • 怎么在自己电脑上搭建网站上海app外包公司
  • 如何把网站做成app导游网站如何建设的
  • 临沭做网站温州seo按天扣费
  • 做网站好的网站建设公司哪家好app开发制作网站平台
  • 网站做301重定向的作用dede网站建站教程
  • 继续浏览此网站(不推荐)云开发壁纸小程序
  • 工艺品做网站怎么制作微信公众号文章
  • 网站板块设置附近网站建设服务公司
  • 陇南市响应式网站建设北京网站建设亿玛酷出名5
  • 网站外链建设分析嘉兴网站排名优化
  • 电影资源网站开发网站建设的专业知识
  • 敦煌网网站推广方式佛山洛可可设计公司
  • 交易平台网站程序dedecms生成xml网站地图
  • 连锁餐饮网站建设如何维护公司网页
  • 盐城网站建设服务汕头最新新闻消息
  • 网站建设有关的职位wordpress一键登录
  • 网站页面设计尺寸天津市建设工程协会网站
  • 系统开发岗位职责无锡seo网站排名优化
  • 网站设计怎么算侵权徐州做网站谁家最专业
  • 什么网站能接单做网站重庆网站建设报价
  • 深圳南山区住房和建设局网站莱芜买房网站