【Flutter小技巧07】--- Flutter生命周期

535 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

Flutter小技巧目录
【Flutter小技巧01】--- TextField文本垂直居中
【Flutter小技巧02】Flutter环境变量配置
【Flutter小技巧03】-- 常见报错记录
【Flutter小技巧04】--- Flutter架构设计
【Flutter小技巧05】--- Flutter混编集成方案探讨
【Flutter小技巧06】--- Flutter折叠头像、毛玻璃效果、消息提示的实现

📃 需求是学习技术最有效的动力

Flutter生命周期,需求,在app前台打开系统界面,用户操作了权限,回到app前台的时候要及时刷新权限状态。

实现:

实现 WidgetsBindingObserver 类

在initState方法
void initState() {
  // TODO: implement initState
  super.initState();
  WidgetsBinding.instance.addObserver(this);
}
在didChangeAppLifecycleState监听状态 可以监听app在进入前台,离开前台的回调。然后就可以做相应的操作。
void didChangeAppLifecycleState(AppLifecycleState state) {
  // TODO: implement didChangeAppLifecycleState
  super.didChangeAppLifecycleState(state);
  switch (state) {
    case AppLifecycleState.inactive:
      Utils.logs('inactive');
      break;
    case AppLifecycleState.resumed:
      Utils.logs('resumed');
      _provider.initPermissionData();
      break;
    case AppLifecycleState.paused:
      Utils.logs('paused');
      break;
    case AppLifecycleState.detached:
      Utils.logs('detached');
      break;
  }
}
在dispose记得移除
void dispose() {
  // TODO: implement dispose
  WidgetsBinding.instance.removeObserver(this);
  super.dispose();
}

app生命周期执行顺序:

createState:该函数为 StatefulWidget 中创建 State 的方法,当 StatefulWidget 被调用时会立即执行 createState
initState:该函数为 State 初始化调用,可以做一些初始化操作。
didChangeDependencies:该函数是在该组件依赖的 State 发生变化时
build:主要是返回需要渲染的 Widget ,由于 build 会被调用多次,因此在该函数中只能做返回 Widget 相关逻辑,避免因为执行多次导致状态异常。
reassemble:主要是提供开发阶段使用,在 debug 模式下,每次热重载都会调用该函数,因此在 debug 阶段可以在此期间增加一些 debug 代码,来检查代码问题。
didUpdateWidget:该函数主要是在组件重新构建,比如说热重载,父组件发生 build 的情况下,子组件该方法才会被调用,其次该方法调用之后一定会再调用本组件中的 build 方法。
deactivate:在组件被移除节点后会被调用,如果该组件被移除节点,然后未被插入到其他节点时,则会继续调用 dispose 永久移除。
dispose:永久移除组件,并释放组件资源。

image.png

记录点滴