Flutter 之 Widget&App生命周期

Widget的生命周期
  • StatelessWidget

    StatelessElement createElement()
    Widget build(BuildContext context)
    
  • StatefulWidget


    image.png
    void initState()
    void didChangeDependencies()
    Widget build(BuildContext context)
    void reassemble()
    void didUpdateWidget(LifeCyclePage oldWidget)
    void deactivate()
    void dispose()
    
App的生命周期

App的生命周期需要通過WidgetsBindingObserver的didChangeAppLifecycleState來獲取,在initState中添加監(jiān)聽WidgetsBinding.instance.addObserver(this);

resumed:可見并能響應(yīng)用戶的輸入
inactiv:處在并不活動(dòng)狀態(tài),無法處理用戶響應(yīng)
paused:不可見并不能響應(yīng)用戶的輸入,但是在后臺(tái)繼續(xù)活動(dòng)中

class LifeCyclePageAState extends State<LifeCyclePageA> with WidgetsBindingObserver {
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        print("app resumed");
        break;
      case AppLifecycleState.inactive:
        print("app inactive");
        break;
      case AppLifecycleState.paused:
        print("app paused");
        break;
      case AppLifecycleState.detached:
        print("app detached");
        break;
    }

    super.didChangeAppLifecycleState(state);
  }

  @override
  void initState() {
    print("initState A");
    WidgetsBinding.instance.addObserver(this);
    super.initState();
  }
  省略其他代碼...
}

推到后臺(tái)再回到前臺(tái)打印如下


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容