import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:dynamic_color/dynamic_color.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/base.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart'; import 'package:adguard_home_manager/config/theme.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); SystemChrome.setPreferredOrientations( [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown] ); AppConfigProvider appConfigProvider = AppConfigProvider(); PackageInfo appInfo = await PackageInfo.fromPlatform(); appConfigProvider.setAppInfo(appInfo); DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); if (Platform.isAndroid) { final androidInfo = await deviceInfo.androidInfo; appConfigProvider.setAndroidInfo(androidInfo); } if (Platform.isIOS) { final iosInfo = await deviceInfo.iosInfo; appConfigProvider.setIosInfo(iosInfo); } runApp( MultiProvider( providers: [ ChangeNotifierProvider( create: ((context) => appConfigProvider) ) ], child: const Main(), ) ); } class Main extends StatelessWidget { const Main({super.key}); @override Widget build(BuildContext context) { final appConfigProvider = Provider.of(context); return DynamicColorBuilder( builder: (lightDynamic, darkDynamic) => MaterialApp( title: 'AdGuard Home Manager', theme: appConfigProvider.androidDeviceInfo != null && appConfigProvider.androidDeviceInfo!.version.sdkInt! >= 31 ? lightTheme(lightDynamic) : lightThemeOldVersions(), darkTheme: appConfigProvider.androidDeviceInfo != null && appConfigProvider.androidDeviceInfo!.version.sdkInt! >= 31 ? darkTheme(darkDynamic) : darkThemeOldVersions(), debugShowCheckedModeBanner: false, localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, AppLocalizations.delegate, ], supportedLocales: const [ Locale('en', ''), Locale('es', '') ], builder: (context, child) { return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: child!, ); }, home: const Base(), ), ); } }