flutter如何监听应用处于前台/后台

Author Avatar
Bruce Yang 6月 27, 2019
  • 在其它设备中阅读本文章

Android 中监听用户可见/不可见就非常简单了,重写 Activity 或者 Fragment 的生命周期回调方法:onResume(),onPause()

那么在 Flutter 中该如何监听应用是否可见呢?有请主角 WidgetsBindingObserver,它可以监听 Widget 生命周期.

如何使用?

  1. State 实现抽象类 WidgetsBindingObserver

    class _MyScreenState extends State<MyScreen> with WidgetsBindingObserver
    
  2. initState 中注册观察回掉

    @override
    void initState() {
     super.initState();
     WidgetsBinding.instance.addObserver(this);
    }
    
  3. dispose 中移除观察回掉

    @override
    void dispose() {
     WidgetsBinding.instance.removeObserver(this);
     super.dispose();
    }
    
  4. didChangeAppLifecycleState 回掉应用可见性状态

    @override
    void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    if (state == AppLifecycleState.paused) {
     // went to Background
    }
    if (state == AppLifecycleState.resumed) {
     // came back to Foreground
    }
    }
    

更多的 Flutter 生命周期内容文章在此: https://medium.com/flutter-community/flutter-lifecycle-for-android-and-ios-developers-8f532307e0c7