部分界面调整,把底部的播放控件完整前置

This commit is contained in:
2026-08-18 22:57:29 +08:00
parent e96da3fb04
commit c05398d76f
7 changed files with 708 additions and 48 deletions
+25 -5
View File
@@ -1,23 +1,24 @@
// lib/main.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:media_kit/media_kit.dart';
import 'services/audio_service.dart';
import 'services/playback_service.dart';
import 'pages/home_page.dart';
import 'widgets/global_mini_player.dart';
// ✅ 全局导航键
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 捕获初始化阶段的所有异常,避免引擎崩溃
try {
// 必须先初始化 media_kit
MediaKit.ensureInitialized();
// 然后初始化播放服务
PlaybackService().init();
} catch (e, stack) {
print('❌ 初始化失败: $e');
print(stack);
// 显示错误页面,而不是白屏
runApp(
MaterialApp(
home: Scaffold(
@@ -47,7 +48,6 @@ void main() {
return;
}
// 运行时错误捕获
FlutterError.onError = (details) {
print('❌ Flutter Error: ${details.exception}');
print('Stack: ${details.stack}');
@@ -68,6 +68,7 @@ class QTPlayerApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title: '清听',
navigatorKey: navigatorKey, // ✅ 设置导航键
theme: ThemeData(
brightness: Brightness.dark,
primaryColor: const Color(0xFF7C9A9E),
@@ -80,6 +81,25 @@ class QTPlayerApp extends StatelessWidget {
useMaterial3: true,
),
home: const HomePage(),
builder: (context, child) {
return Overlay(
initialEntries: [
OverlayEntry(
builder: (context) => Stack(
children: [
Positioned.fill(child: child!),
const Positioned(
left: 0,
right: 0,
bottom: 0,
child: GlobalMiniPlayer(),
),
],
),
),
],
);
},
);
}
}