import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:feature_brain_trainer/feature_brain_trainer.dart'; import 'package:service_api/service_api.dart'; import 'package:feature_common/feature_common.dart'; // ThemeNotifier가 여기 포함되어 있습니다. void main() async { WidgetsFlutterBinding.ensureInitialized(); // 세로 모드 고정 await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); // 1. 서비스 및 Notifier 인스턴스 생성 final identityService = IdentityService(); final sessionNotifier = SessionNotifier(identityService); // [Fix] ThemeNotifier 생성 (에러 원인 해결) final themeNotifier = ThemeNotifier(); // 2. 초기 데이터 로드 await sessionNotifier.loadSession(); runApp( MultiProvider( providers: [ // 기존 Provider Provider.value(value: identityService), ChangeNotifierProvider.value(value: sessionNotifier), // [Fix] ThemeNotifier 등록 (이 줄이 없어서 에러가 났습니다) ChangeNotifierProvider.value(value: themeNotifier), ], child: const NeuroGymApp(), ), ); } class NeuroGymApp extends StatelessWidget { const NeuroGymApp({super.key}); @override Widget build(BuildContext context) { // ThemeNotifier를 통해 테마를 동적으로 가져올 수도 있지만, // 기본적으로 Consumer를 쓰거나 context.watch를 씁니다. // 여기서는 기본 설정을 유지합니다. return Consumer( builder: (context, theme, child) { return MaterialApp( title: 'NeuroGym', // [Fix] ThemeNotifier의 테마 적용 (선택 사항이나 권장됨) theme: theme.getTheme(), home: const BrainTrainingHome(), debugShowCheckedModeBanner: false, ); } ); } }