import 'package:flutter/material.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:notube/screens/settings.dart'; import 'package:notube/wrapper.dart'; import 'package:notube/constants.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:window_manager/window_manager.dart'; import 'package:upgrader/upgrader.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:notube/videoList/cubit/videos_cubit.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); await windowManager.ensureInitialized(); WindowOptions windowOptions = WindowOptions( size: Size(800, 600), minimumSize: Size(320, 400), title: 'NoTube', ); windowManager.waitUntilReadyToShow(windowOptions, () async { await windowManager.setIcon('assets/images/icon.png'); await windowManager.show(); await windowManager.focus(); }); runApp( EasyLocalization( supportedLocales: [Locale('en', 'US'), Locale('fr', 'FR')], path: 'lib/translations', fallbackLocale: Locale('en', 'US'), child: NoTubeApp()), ); } class NoTubeApp extends StatefulWidget { const NoTubeApp({super.key}); @override State createState() => _NoTubeAppState(); } class _NoTubeAppState extends State { static const appcastURL = 'https://raw.githubusercontent.com/larryaasen/upgrader/master/test/testappcast.xml'; final upgrader = Upgrader( storeController: UpgraderStoreController( onAndroid: () => UpgraderAppcastStore(appcastURL: appcastURL), ), ); @override Widget build(BuildContext context) { return MaterialApp( title: 'NoTube', theme: ThemeData( fontFamily: 'Poppins', useMaterial3: true, colorScheme: ColorScheme.fromSeed( seedColor: colorMainRed, brightness: Brightness.dark), appBarTheme: const AppBarTheme(color: colorBackgroundBlack, elevation: 0), scaffoldBackgroundColor: colorMainGrey), localizationsDelegates: context.localizationDelegates, supportedLocales: context.supportedLocales, locale: context.locale, initialRoute: '/', routes: { '/': (context) => BlocProvider( create: (context) => VideosCubit(), child: UpgradeAlert(upgrader: upgrader, child: const Wrapper())), '/settings': (context) => Settings(), }, ); } }