| // Copyright 2019 The Flutter team. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'dart:io'; |
| |
| import 'package:flutter/foundation.dart'; |
| import 'package:flutter/material.dart'; |
| import 'package:flutter/scheduler.dart' show timeDilation; |
| import 'package:flutter_localized_countries/flutter_localized_countries.dart'; |
| import 'package:gallery/constants.dart'; |
| import 'package:gallery/data/gallery_options.dart'; |
| import 'package:gallery/l10n/gallery_localizations.dart'; |
| import 'package:gallery/pages/backdrop.dart'; |
| import 'package:gallery/pages/home.dart'; |
| import 'package:gallery/pages/settings.dart'; |
| import 'package:gallery/pages/splash.dart'; |
| import 'package:gallery/themes/gallery_theme_data.dart'; |
| |
| void setOverrideForDesktop() { |
| if (kIsWeb) return; |
| |
| if (Platform.isMacOS) { |
| debugDefaultTargetPlatformOverride = TargetPlatform.iOS; |
| } else if (Platform.isLinux || Platform.isWindows) { |
| debugDefaultTargetPlatformOverride = TargetPlatform.android; |
| } else if (Platform.isFuchsia) { |
| debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia; |
| } |
| } |
| |
| void main() { |
| setOverrideForDesktop(); |
| runApp(GalleryApp()); |
| } |
| |
| class GalleryApp extends StatelessWidget { |
| @override |
| Widget build(BuildContext context) { |
| return ModelBinding( |
| initialModel: GalleryOptions( |
| themeMode: ThemeMode.system, |
| textScaleFactor: systemTextScaleFactorOption, |
| customTextDirection: CustomTextDirection.localeBased, |
| locale: null, |
| timeDilation: timeDilation, |
| platform: defaultTargetPlatform, |
| ), |
| child: Builder( |
| builder: (context) { |
| return MaterialApp( |
| title: 'Gallery', |
| debugShowCheckedModeBanner: false, |
| themeMode: GalleryOptions.of(context).themeMode, |
| theme: GalleryThemeData.lightThemeData.copyWith( |
| platform: GalleryOptions.of(context).platform, |
| ), |
| darkTheme: GalleryThemeData.darkThemeData.copyWith( |
| platform: GalleryOptions.of(context).platform, |
| ), |
| localizationsDelegates: [ |
| ...GalleryLocalizations.localizationsDelegates, |
| LocaleNamesLocalizationsDelegate() |
| ], |
| supportedLocales: GalleryLocalizations.supportedLocales, |
| locale: GalleryOptions.of(context).locale, |
| localeResolutionCallback: (locale, supportedLocales) { |
| deviceLocale = locale; |
| return locale; |
| }, |
| home: ApplyTextOptions( |
| child: SplashPage( |
| child: Backdrop( |
| frontLayer: SettingsPage(), |
| backLayer: HomePage(), |
| ), |
| ), |
| ), |
| ); |
| }, |
| ), |
| ); |
| } |
| } |