第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【備戰(zhàn)春招】第7天 Flutter 中頁面和應(yīng)用的生命周期

標(biāo)簽:
Android

课程名称Flutter从入门到进阶 实战携程网App 一网打尽核心技术
课程章节:Flutter入门:基础知识十六讲
课程讲师CrazyCodeBoy

课程内容

Flutter页面的生命周期

Flutter 页面相关的组件包括 StatelessWidget 和 StatefulWidget,StatelessWidget的生命周期只有 createElement() 和build() 两个回调函数。

StatefulWidget 的生命周期有关的回调函数相对丰富一些:

  • createState(),当构建一个新的StatefulWidget时,这个回调函数会立即被调用,并且这个方法必须被覆盖。
  • initState(),这是创建widget时调用的除构造方法外的第一个方法,类似于Android的:onCreate() 与iOS的 viewDidLoad(),在这个方法中通常会做一些初始化工作,比如channel的初始化,监听器的初始化等。
  • didChangeDependencies(),当依赖的State对象改变时会被调用,在第一次构建widget时,在initState()之后立即调用此方法;如果的StatefulWidgets依赖于InheritedWidget,那么当当前State所依赖InheritedWidget中的变量改变时会再次调用它。InheritedWidget可以高效的将数据在Widget树中向下传递、共享。
  • build(),这是一个必须实现的方法,在这里实现你要呈现的页面内容,它会在在didChangeDependencies()之后立即调用,另外当调用setState()后也会再次调用该方法。
  • didUpdateWidget(),这是一个不常用到的生命周期方法,当父组件需要重新绘制时才会调用,该方法会携带一个oldWidget参数,可以将其与当前的widget进行对比以便执行一些额外的逻辑。
  • deactivate(),很少使用,在组件被移除时被调用,会在dispose()之前被调用。
  • dispose(),当组件被销毁时调用,通常在该方法中执行一些资源的释放工作比如,监听器的卸载,channel的销毁等。

Flutter应用的生命周期

上面介绍了 Flutter 页面相关的生命周期,如果想要监听页面退到后台与返回前台,即监听整个应用的生命周期,需要实现WidgetBindingObserver 接口。

  • 在创建 State时可以通过 mixin,实现WidgetBindingObserver接口。
  • 在 instate()时通过WidgetsBinding.instance.addObservwe(this)实现监听;
  • 然后重写接口中的didChanageCurrentState(CurrentState state)方法。
  • 这个方法有一个参数类型为AppLifecycleState的枚举类,可以根据它的状态来处理一些任务。

示例代码

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter应用生命周期'),
        leading:const BackButton(),
      ),
      body: const Text('Flutter应用生命周期'),
    );
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    print('state = $state');
    if (state == AppLifecycleState.paused) {
      print('App进入后台');
    } else if (state == AppLifecycleState.resumed) {
      print('App进去前台');
    } else if (state == AppLifecycleState.inactive) {
      //不常用:应用程序处于非活动状态,并且未接收用户输入时调用,比如:来了个电话
    } else if (state == AppLifecycleState.detached) {
      //不常用:应用程序被挂起是调用,它不会在iOS上触发
    }
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }
}

关于AppLifecycleState状态的说明:

  • resumed:应用可见并可响应用户操作;
  • inactive:用户可见,但不可响应用户操作;
  • paused:已经暂停了,用户不可见、不可操作;
  • suspending:应用被挂起,此状态iOS不会回调。

课程总结

这一节介绍了Flutter中页面的生命周期,和 Flutter 应用的生命周期。可以理解为 Android 中 Activity 和 Application 的生命周期,通过对比快速上手。
图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開發(fā)工程師
手記
粉絲
12
獲贊與收藏
17

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消