Newer
Older
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:hive/hive.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:path_provider/path_provider.dart';
import 'config/theme.dart';
import 'cubit/theme_cubit.dart';
import 'ui/screens/skeleton_screen.dart';
/// Try using const constructors as much as possible!
void main() async {
/// Initialize packages
WidgetsFlutterBinding.ensureInitialized();
await EasyLocalization.ensureInitialized();
if (Platform.isAndroid) {
await FlutterDisplayMode.setHighRefreshRate();
}
final Directory tmpDir = await getTemporaryDirectory();
final HydratedStorage storage = await HydratedStorage.build(
HydratedBlocOverrides.runZoned(
() => runApp(
EasyLocalization(
path: 'assets/translations',
supportedLocales: const <Locale>[
Locale('en'),
Locale('de'),
],
fallbackLocale: const Locale('en'),
useFallbackTranslations: true,
child: const MyApp(),
),
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider<ThemeCubit>(
create: (BuildContext context) => ThemeCubit(),
child: BlocBuilder<ThemeCubit, ThemeModeState>(
builder: (BuildContext context, ThemeModeState state) {
return MaterialApp(
/// Localization is not available for the title.
title: 'Flutter Production Boilerplate',
/// Theme stuff
theme: lightTheme,
darkTheme: darkTheme,
themeMode: state.themeMode,
/// Localization stuff
localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales,
locale: context.locale,
debugShowCheckedModeBanner: false,
home: const SkeletonScreen(),