63 lines
2.0 KiB
Dart
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,
|
|
);
|
|
}
|
|
);
|
|
}
|
|
} |