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'; void main() { WidgetsFlutterBinding.ensureInitialized(); // 捕获初始化阶段的所有异常,避免引擎崩溃 try { // 必须先初始化 media_kit MediaKit.ensureInitialized(); // 然后初始化播放服务 PlaybackService().init(); } catch (e, stack) { print('❌ 初始化失败: $e'); print(stack); // 显示错误页面,而不是白屏 runApp( MaterialApp( home: Scaffold( backgroundColor: const Color(0xFF0E1211), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.error_outline, size: 64, color: Colors.red[300]), const SizedBox(height: 16), Text( '应用初始化失败', style: TextStyle(color: Colors.white, fontSize: 20), ), const SizedBox(height: 8), Text( '$e', style: TextStyle(color: Colors.grey[400], fontSize: 14), textAlign: TextAlign.center, ), ], ), ), ), ), ); return; } // 运行时错误捕获 FlutterError.onError = (details) { print('❌ Flutter Error: ${details.exception}'); print('Stack: ${details.stack}'); }; runApp( ChangeNotifierProvider( create: (_) => AudioService(), child: const QTPlayerApp(), ), ); } class QTPlayerApp extends StatelessWidget { const QTPlayerApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: '清听', theme: ThemeData( brightness: Brightness.dark, primaryColor: const Color(0xFF7C9A9E), colorScheme: const ColorScheme.dark( primary: Color(0xFF7C9A9E), secondary: Color(0xFFB8D4D0), surface: Color(0xFF1A1F1E), onSurface: Colors.white, ), useMaterial3: true, ), home: const HomePage(), ); } }