首页 > 解决方案 > AppLifcycleState.didChangeLifecycleState( ) 函数在应用程序进入前台或后台时不被调用

问题描述

当我打开我的应用程序或在后台运行时,不会调用 didChangeAppLifecycleState() 并且不会执行打印语句。

   import 'package:flutter/widgets.dart';
   import 'package:flutter/material.dart';


   void main(){
    runApp(
    MaterialApp(
      home: Home(),
    )
   );
   }


   class Home extends StatefulWidget {
   @override
    _HomeState createState() => _HomeState();
   }

   class _HomeState extends State<Home> with WidgetsBindingObserver{
   AppLifecycleState state;
   @override
   void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
   }
  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  void didChangeAppLifeCycleState(AppLifecycleState appLifecycleState) {
    state = appLifecycleState;
    print(appLifecycleState);
    print(":::::::");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Center(
          child:Text("hi")
        ),
      ),
    );
  }
}
}

didChangeAppLifeCycleState() 中的打印语句未执行。

标签: dartflutter

解决方案


这不是 OP 问题的答案,每次我遇到这个问题时,我都忘了打电话WidgetsBinding.instance.addObserver(this);initState().

如果didChangeAppLifecycleState没有为您调用,请不要忘记将您的实现类添加为侦听器。

请参阅和中的 OP 代码,initState()dispose()确保您也这样做。


推荐阅读