Stateless无状态组件

//Stateless无状态组件比较简单就是一个 build 函数,每次外部新状态压入,进行调用
//当Widget不再需要时,比如在页面切换或者被移除时,Flutter会销毁这些Widget。
//对于StatelessWidget来说,它没有内部状态(即无可变的变量)

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

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

createState 创建状态

//createState 创建状态
class LeftPage extends StatefulWidget {

  final String title;
  const LeftPage({super.key, required this.title});

//1、当您创建一个statefulWidget时,这将自动创建。
  @override
  State<LeftPage> createState() => _LeftPageState();
}

class _LeftPageState extends State<LeftPage> {


  //2、initState 初始化状态
  //在小部件创建之前和构建方法之前调用 ; 一般用来初始状态数据
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
      print('-------------------------initState');

  }

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

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

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

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

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

 

 

posted on 2024-01-16 11:55  鲤斌  阅读(32)  评论(0)    收藏  举报