如何获取到app后台事件?

作者站长头像
站长
· 阅读数 8

在我的flutter项目里一个页面在播放mp3文件,当app滑至后台时音频还是会继续播放?请问如何能够实现当app后台时暂停播放,打开时继续播放?

回复
1个回答
avatar
test
2024-06-30
import 'package:flutter/material.dart';

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  AppLifecycleState _appLifecycleState;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

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

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    _appLifecycleState = state;
    switch(state) {
      case AppLifecycleState.paused:
        // App进入后台
        // 在这里暂停音频播放
        break;
      case AppLifecycleState.resumed:
        // App进入前台
        // 在这里恢复音频播放
        break;
      default:
        break;
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('App Lifecycle Demo'),
        ),
        body: Center(
          child: Text('Current state: $_appLifecycleState'),
        ),
      ),
    );
  }
}

void main() {
  runApp(MyApp());
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容