2025-12-15 18:18:17 +09:00

63 lines
2.0 KiB
Dart

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<IdentityService>.value(value: identityService),
ChangeNotifierProvider<SessionNotifier>.value(value: sessionNotifier),
// [Fix] ThemeNotifier 등록 (이 줄이 없어서 에러가 났습니다)
ChangeNotifierProvider<ThemeNotifier>.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<ThemeNotifier>(
builder: (context, theme, child) {
return MaterialApp(
title: 'NeuroGym',
// [Fix] ThemeNotifier의 테마 적용 (선택 사항이나 권장됨)
theme: theme.getTheme(),
home: const BrainTrainingHome(),
debugShowCheckedModeBanner: false,
);
}
);
}
}