import 'package:flutter/material.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:provider/provider.dart'; // [C] 공통 서비스 import 'package:service_api/service_api.dart'; // [A] 공통 UI 셸 (인트로 화면) import 'package:feature_common/feature_common.dart'; // [B] 순서 기억 게임 (로비 화면) import 'package:feature_game_sequence/feature_game_sequence.dart'; // 👈 [신규] void main() async { WidgetsFlutterBinding.ensureInitialized(); // MobileAds 초기화는 앱 시작 시 한 번만 수행 await MobileAds.instance.initialize(); runApp( MultiProvider( providers: [ // 1. ThemeNotifier (테마 관리) ChangeNotifierProvider( create: (_) => ThemeNotifier(), ), // 2. SessionNotifier (로그인/세션 관리) ChangeNotifierProvider( create: (_) => SessionNotifier(), ), // 3. PuzzleService (랭킹/게임 시작 API) Provider( create: (_) => PuzzleService(), ), // 4. IdentityService (유저/레벨/랭킹 이력 관리) Provider( create: (_) => IdentityService(), ), ], child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { // 테마 감지 및 최적화 final themeData = context.select((ThemeNotifier n) => n.currentTheme); final darkThemeData = context.select((ThemeNotifier n) => n.currentDarkTheme); final themeMode = context.select((ThemeNotifier n) => n.currentThemeMode); return MaterialApp( title: '순서 기억 게임', // 👈 앱 이름 변경 theme: themeData, darkTheme: darkThemeData, themeMode: themeMode, debugShowCheckedModeBanner: false, // 🔽 [🔥 핵심] IntroScreen 다음에 SequenceLobbyScreen이 표시되도록 지정 home: IntroScreen( nextScreenBuilder: (context) => SequenceLobbyScreen(), // 👈 [수정] ), ); } }