【flutter】flutter Widget核心点总结大全

1、Widget
Widget是个抽象类,定义如下:

@immutable
abstract class Widget extends DiagnosticableTree {
  const Widget({ this.key });
  final Key key;

  @protected
  Element createElement();

  static bool canUpdate(Widget oldWidget, Widget newWidget) {
    return oldWidget.runtimeType == newWidget.runtimeType
        && oldWidget.key == newWidget.key;
  }
}

说明:
(1)Key: 这个key属性主要的作用是决定是否在下一次build时复用旧的widget,决定的条件在canUpdate()方法中。
(2)canUpdate(...)是一个静态方法,它主要用于在Widget树重新build时复用旧的widget。只要newWidget与oldWidget的runtimeType和key同时相等时就会用newWidget去更新Element对象的配置,否则就会创建新的Element。
(3)StatelessWidget和StatefulWidget是Widget常用的两个子类,他们两也是abstract抽象类。

2、StatefulWidget

abstract class StatefulWidget extends Widget {
  const StatefulWidget({ Key key }) : super(key: key);

  @override
  StatefulElement createElement() => new StatefulElement(this);

  @protected
  State createState();
}

说明:
(1)一个StatefulWidget类会对应一个State类,State表示与其对应的StatefulWidget要维护的状态。本质上就是一个StatefulElement对应一个State实例。
(2)当State被改变时,可以手动调用其setState()方法通知Flutter framework状态发生改变,Flutter framework在收到消息后,会重新调用其build方法重新构建widget树,从而达到更新UI的目的。

3、State生命周期
(1)举个生命周期例子
(a)首次启动StatefulWidget,生命周期执行如下:

initState 
didChangeDependencies
build

(b)然后点击热重载按钮,生命周期执行如下:

reassemble
didUpdateWidget
build

(c)在widget树中将当前StatefulWidget移除,然后热重载,生命周期执行如下:

reassemble 
deactivate
dispose

(2)生命周期方法说明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值