recipe-manager/mobile/lib/main.dart

55 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'core/constants/app_theme.dart';
import 'core/providers.dart';
import 'features/auth/login_screen.dart';
import 'features/navigation/main_navigation_shell.dart';
import 'features/share_receiver/share_receiver_service.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
runApp(const ProviderScope(child: ForkFolioApp()));
}
class ForkFolioApp extends ConsumerStatefulWidget {
const ForkFolioApp({super.key});
@override
ConsumerState<ForkFolioApp> createState() => _ForkFolioAppState();
}
class _ForkFolioAppState extends ConsumerState<ForkFolioApp> {
final ShareReceiverService _shareReceiver = ShareReceiverService();
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_shareReceiver.init(context);
});
}
@override
void dispose() {
_shareReceiver.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final authState = ref.watch(authProvider);
return MaterialApp(
title: 'ForkFolio',
debugShowCheckedModeBanner: false,
theme: AppTheme.darkTheme,
home: authState.isAuthenticated ? const MainNavigationShell() : const LoginScreen(),
);
}
}