【问题标题】:Run function when app is in background | Flutter应用在后台时运行函数 |扑
【发布时间】:2020-12-12 02:50:50
【问题描述】:

我的应用包含一些背景音乐。 我希望能够在用户离开应用程序时关闭它。 我可以通过使用WillPopScope 部分做到这一点:

Future<bool> _willPopCallback() async {
    player.stop();
    return true;
  }

但这不是正确的原因是它仅在用户单击back-button 时才有效,而不是home-button。这是一个相当大的问题,因为这样音乐将继续在后台播放。 我该如何解决这个问题?

【问题讨论】:

    标签: flutter background-process audio-player


    【解决方案1】:

    使用WidgetsBindingObserver,它在暂停/恢复时提供小部件回调。这可以解决你的问题

    class MusicWidget extends StatefulWidget {
      @override
      _MusicWidgetState createState() => _MusicWidgetState();
    }
    
    class _MusicWidgetState extends State<MusicWidget> with WidgetsBindingObserver {
      @override
      void initState() {
        WidgetsBinding.instance.addObserver(this);
        super.initState();
      }
    
      @override
      void dispose() {
        WidgetsBinding.instance.removeObserver(this);
        super.dispose();
      }
    
      @override
      void didChangeAppLifecycleState(AppLifecycleState state) {
        // TODO: implement didChangeAppLifecycleState
        super.didChangeAppLifecycleState(state);
        if(AppLifecycleState.paused == state) {
          /// TODO: Stop music player
        }
        print(state);
      }
    
      @override
      Widget build(BuildContext context) {
        return Container();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-29
      • 2010-10-15
      • 1970-01-01
      • 2015-10-29
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      相关资源
      最近更新 更多