[flutter-15]StatefulWidget-Lifecycle

时间:2021-06-02 15:48:19   收藏:0   阅读:20

StatefulWidget-Lifecycle(生命周期)

StatefulWidget 有哪些生命周期回调?分别在什么情况下执行的?

import ‘package:flutter/material.dart‘;

void main(List<String> args) {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(‘首页‘),
        ),
        body: HomeContent(),
      ),
    );
  }
}

/*
StatefulWidget 生命周期:
// 首先执行StatefulWidget 相关方法:


*/

class HomeContent extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    print(‘2-执行createState方法创建state对象‘); // StatefulWidget第二个执行的创建State实例的方法
    return HomeContentState();
  }

  HomeContent() {
    print(‘1-执行HomeContent构造器方法‘); // 类的构造器方法第一个执行
  }
}

class HomeContentState extends State<HomeContent> {
  var _counter = 0;

  HomeContentState() {
    print(‘3-执行HomeContentState 构造器方法‘); // 类的构造器方法是该类第1个执行的
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    print(‘4-执行了State方法中的initState方法‘); // state类的init方法第2个执行
  }

  @override
  void didChangeDependencies() {
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();
    print(‘5-执行了State方法中的didChangeDependencies方法‘); // state类的didChangeDependencies方法第3个执行
  }

  @override
  void didUpdateWidget(covariant HomeContent oldWidget) {
    // TODO: implement didUpdateWidget
    super.didUpdateWidget(oldWidget);
    print(‘7-执行了state方法中的didUpdateWidget方法‘); // 这个方法待定!!!!
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    print(‘8-执行了State方法中的dispose方法‘); // 当这个widget不再使用的使用、就会调用这个方法
  }

  @override
  Widget build(BuildContext context) {
    print(‘6-执行了State方法中的build方法‘); // 开始执行build方法
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              RaisedButton(
                color: Colors.redAccent,
                child: Text(
                  ‘+1‘,
                  style: TextStyle(
                    fontSize: 20,
                    color: Colors.white,
                  ),
                ),
                onPressed: () {
                  print(‘+1‘);
                  _increase();
                },
              ),
              RaisedButton(
                color: Colors.orangeAccent,
                child: Text(
                  ‘-1‘,
                  style: TextStyle(
                    fontSize: 20,
                    color: Colors.white,
                  ),
                ),
                onPressed: () {
                  print(‘-1‘);
                  _decrease();
                },
              ),
            ],
          ),
          Text(
            ‘当前计数: $_counter‘,
            style: TextStyle(
              fontSize: 20,
              color: Colors.black,
              fontWeight: FontWeight.bold,
            ),
          )
        ],
      ),
    );
  }

  // 增加计数
  void _increase() {
    setState(() {
      _counter++;
    });
  }

  // 减少计数
  void _decrease() {
    setState(() {
      _counter--;
    });
  }
}

// 打印
flutter: 1-执行HomeContent构造器方法
flutter: 2-执行createState方法创建state对象
flutter: 3-执行HomeContentState 构造器方法
flutter: 4-执行了State方法中的initState方法
flutter: 5-执行了State方法中的didChangeDependencies方法
flutter: 6-执行了State方法中的build方法
手动调用-setState() {}, 再次rebuild方法触发
flutter: 6-执行了State方法中的build方法



原文:https://www.cnblogs.com/comefromchina/p/flutter-statefulewidget-lifecycle.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!