68 lines
2.0 KiB
Dart
Raw Normal View History

2025-11-19 17:00:33 +09:00
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(), // 👈 [수정]
),
);
}
}