StatefulWidget 生命周期

StatefulWidget 生命周期

widget基础学习参考:flutterchina
针对该篇内容进行了StatefulWidget的生命周期测试,从而绘制出自己所了解的大致生命周期流程图,
如果有更好的生命周期过程,欢迎分享

import 'package:flutter/material.dart';

class CouterWidgetState extends StatefulWidget {
  const CouterWidgetState({Key key, @required this.initValue: 0})
      : super(key: key);
  final int initValue;
  @override
  State createState() => new CouterState();
}

/// 创建并打开:initState->didChangeDependencies->build.   
/// 横竖屏切换:didUpdateWidget->build  当前值保留
/// 离开页面:deactivate->dispose 重新进入init重新初始化
/// 热重载执行:reassemble->didUpdateWidget->build
/// 调用setState->build
class CouterState extends State {
  int _couter;
  /// 初始化调用
  @override
  void initState() {
    super.initState();
    _couter = widget.initValue;
    print('initState$_couter');

  }

  /// State对象依赖发生变化调用;系统语言、主题修改,系统也会通知调用
  @override
  void didChangeDependencies() {
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();
    print('didChangeDependencies');
  }
  /// 热重载会被调用,在release下永远不会被调用
  @override
  void reassemble() {
    // TODO: implement reassemble
    super.reassemble();
    print('reassemble');
  }

  /// 新旧Widget的key、runtimeType不变时调用。也就是Widget.canUpdate=>true
  @override
  void didUpdateWidget(CouterWidgetState oldWidget) {
    // TODO: implement didUpdateWidget
    super.didUpdateWidget(oldWidget);
    print('didUpdateWidget');
  }

  /// State在树种移除调用
  @override
  void deactivate() {
    // TODO: implement deactivate
    super.deactivate();
    print('deactivate');
  }

  /// State在树中永久移除调用,相当于释放
  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    print('dispose');
  }

  /// 用于子树的渲染
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    print('build');
    return Scaffold(
      body: Center(
        child: FlatButton(
          child: Text('$_couter'),
          onPressed: (){
            setState(() {
             ++_couter; 
            });
          },
        ),
      ),
    );
  }
}

StatefulWidget 生命周期_第1张图片

你可能感兴趣的:(Flutter基础)