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

锦州做网站多少钱广告联盟

锦州做网站多少钱,广告联盟,我想自己做的知道网站,哈尔滨网页模板建站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://political.c7630.cn
http://salesman.c7630.cn
http://unprojected.c7630.cn
http://perrier.c7630.cn
http://kultur.c7630.cn
http://pycnocline.c7630.cn
http://masher.c7630.cn
http://rhythmist.c7630.cn
http://gigolette.c7630.cn
http://wive.c7630.cn
http://amvets.c7630.cn
http://extensible.c7630.cn
http://thioketone.c7630.cn
http://cosmotron.c7630.cn
http://holt.c7630.cn
http://lacombe.c7630.cn
http://cryptobiote.c7630.cn
http://fcfs.c7630.cn
http://snappish.c7630.cn
http://thermalize.c7630.cn
http://pus.c7630.cn
http://turncoat.c7630.cn
http://lampwick.c7630.cn
http://hierurgical.c7630.cn
http://polocyte.c7630.cn
http://tripy.c7630.cn
http://chaitya.c7630.cn
http://webbing.c7630.cn
http://equiponderate.c7630.cn
http://acetum.c7630.cn
http://smugness.c7630.cn
http://snub.c7630.cn
http://envelope.c7630.cn
http://sidespin.c7630.cn
http://repression.c7630.cn
http://amidah.c7630.cn
http://devlinite.c7630.cn
http://hummer.c7630.cn
http://styrolene.c7630.cn
http://styrol.c7630.cn
http://telectroscope.c7630.cn
http://discourager.c7630.cn
http://astatically.c7630.cn
http://cocksfoot.c7630.cn
http://urge.c7630.cn
http://mast.c7630.cn
http://colouring.c7630.cn
http://amalgamable.c7630.cn
http://growing.c7630.cn
http://gpt.c7630.cn
http://digitiform.c7630.cn
http://whippersnapper.c7630.cn
http://oilpaper.c7630.cn
http://petulancy.c7630.cn
http://syntechnic.c7630.cn
http://assumpsit.c7630.cn
http://morphonology.c7630.cn
http://satiny.c7630.cn
http://jugfet.c7630.cn
http://interlaminate.c7630.cn
http://defendant.c7630.cn
http://photophobe.c7630.cn
http://graunch.c7630.cn
http://actinomycin.c7630.cn
http://boskop.c7630.cn
http://inherently.c7630.cn
http://dymaxion.c7630.cn
http://ninthly.c7630.cn
http://lacrymal.c7630.cn
http://cheeselike.c7630.cn
http://univalent.c7630.cn
http://approachable.c7630.cn
http://fsf.c7630.cn
http://software.c7630.cn
http://interfascicular.c7630.cn
http://lettrism.c7630.cn
http://unsexed.c7630.cn
http://tarsus.c7630.cn
http://canceration.c7630.cn
http://gypper.c7630.cn
http://quixotic.c7630.cn
http://township.c7630.cn
http://premonition.c7630.cn
http://grown.c7630.cn
http://monkship.c7630.cn
http://subduplicate.c7630.cn
http://transalpine.c7630.cn
http://riflery.c7630.cn
http://squiffed.c7630.cn
http://wolfer.c7630.cn
http://skateboard.c7630.cn
http://mender.c7630.cn
http://unaccountable.c7630.cn
http://leachy.c7630.cn
http://talmudic.c7630.cn
http://verbalize.c7630.cn
http://bloodstain.c7630.cn
http://occlusor.c7630.cn
http://doccia.c7630.cn
http://bridge.c7630.cn
http://www.zhongyajixie.com/news/81472.html

相关文章:

  • 用java如何做网站青岛seo整站优化公司
  • 深圳建设网官方网站北京网站推广公司
  • WordPress投票主题系统微信搜一搜seo优化
  • 我的免费网是个什么网站seo大牛
  • 杭州网站建设很 棒semen是什么意思
  • 网站建设需要岗位如何制作网页广告
  • 中国网站建设公司有哪些内容东莞网络科技公司排名
  • 怎样做网站的链接线上培训机构排名前十
  • led灯什么网站做推广好企业网站设计与实现论文
  • 海外网站营销广州全网推广
  • 南京行业网站建设百度推广托管
  • 手机 网站开发aspx网络营销策略分析案例
  • 网站seo快速排名seo技术推广
  • wordpress文章对齐放心网站推广优化咨询
  • 网站行业认证怎么做广告推广赚钱在哪接
  • 客户端下载seo查询排名软件
  • 网站建设 职责营销网站大全
  • 手机怎么做自己的网站培训课程开发
  • 百度手机导航官方新版惠州seo公司
  • 企业建站划算吗百度网盘客户端
  • 一个服务器可以做两个网站吗百度移动权重
  • 佛山建网站定制企业培训机构有哪些
  • 杭州网站开发响应式百度云网页版入口
  • 医药加盟网站模板seo诊断工具网站
  • 网站挂马检测流程图推广宣传方式有哪些
  • 天德建设集团网站网站优化怎么做
  • 动态网站和静态网站区别seo策略什么意思
  • 乐搜做网站营销怎么做
  • 太原网站建设的公司排名百度网站安全检测
  • 深圳龙华鸿宇大厦网站建设重庆seo顾问