部分界面逻辑调整:播放界面默认最高优先级,其次是独立的miniplayerbar

This commit is contained in:
2026-08-18 23:08:52 +08:00
parent c05398d76f
commit 74a15ca7af
5 changed files with 103 additions and 164 deletions
+39 -2
View File
@@ -5,6 +5,7 @@ import 'package:media_kit/media_kit.dart';
import 'services/audio_service.dart';
import 'services/playback_service.dart';
import 'pages/home_page.dart';
import 'pages/player_page.dart';
import 'widgets/global_mini_player.dart';
// ✅ 全局导航键
@@ -61,14 +62,41 @@ void main() {
);
}
class QTPlayerApp extends StatelessWidget {
class QTPlayerApp extends StatefulWidget {
const QTPlayerApp({super.key});
@override
State<QTPlayerApp> createState() => _QTPlayerAppState();
}
class _QTPlayerAppState extends State<QTPlayerApp> {
bool _showPlayerPage = false;
// ✅ 播放页回调,暴露给 GlobalMiniPlayer
void _openPlayerPage() {
setState(() {
_showPlayerPage = true;
});
}
void _closePlayerPage() {
setState(() {
_showPlayerPage = false;
});
}
@override
void initState() {
super.initState();
// ✅ 注入回调(GlobalMiniPlayer 是 static 成员)
GlobalMiniPlayer.onOpenPlayerPage = _openPlayerPage;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '清听',
navigatorKey: navigatorKey, // ✅ 设置导航键
navigatorKey: navigatorKey,
theme: ThemeData(
brightness: Brightness.dark,
primaryColor: const Color(0xFF7C9A9E),
@@ -87,13 +115,22 @@ class QTPlayerApp extends StatelessWidget {
OverlayEntry(
builder: (context) => Stack(
children: [
// ① 主页面
Positioned.fill(child: child!),
// ② MiniPlayer
const Positioned(
left: 0,
right: 0,
bottom: 0,
child: GlobalMiniPlayer(),
),
// ③ 播放页(全屏覆盖)
if (_showPlayerPage)
Positioned.fill(
child: PlayerPage(
onClose: _closePlayerPage,
),
),
],
),
),