Files
FocusBuddy/lib/main.dart
2025-11-24 10:33:09 +08:00

77 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import 'theme/app_theme.dart';
import 'services/storage_service.dart';
import 'services/encouragement_service.dart';
import 'services/notification_service.dart';
import 'screens/home_screen.dart';
import 'screens/onboarding_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize services
await StorageService.init();
final encouragementService = EncouragementService();
await encouragementService.loadMessages();
// Initialize notification service
final notificationService = NotificationService();
await notificationService.initialize();
// Request permissions on first launch
await notificationService.requestPermissions();
runApp(MyApp(encouragementService: encouragementService));
}
class MyApp extends StatefulWidget {
final EncouragementService encouragementService;
const MyApp({
super.key,
required this.encouragementService,
});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _hasCompletedOnboarding = false;
bool _isLoading = true;
@override
void initState() {
super.initState();
_checkOnboardingStatus();
}
Future<void> _checkOnboardingStatus() async {
final completed = await OnboardingScreen.hasCompletedOnboarding();
setState(() {
_hasCompletedOnboarding = completed;
_isLoading = false;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'FocusBuddy',
debugShowCheckedModeBanner: false,
theme: AppTheme.lightTheme,
home: _isLoading
? const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
)
: _hasCompletedOnboarding
? HomeScreen(encouragementService: widget.encouragementService)
: OnboardingScreen(
encouragementService: widget.encouragementService,
),
);
}
}