// @dart=2.9 import 'dart:async'; import 'dart:io'; import 'package:adaptive_theme/adaptive_theme.dart'; import 'package:ente_auth/core/configuration.dart'; import 'package:ente_auth/core/event_bus.dart'; import 'package:ente_auth/ente_theme_data.dart'; import 'package:ente_auth/events/signed_in_event.dart'; import 'package:ente_auth/events/signed_out_event.dart'; import "package:ente_auth/l10n/l10n.dart"; import 'package:ente_auth/locale.dart'; import "package:ente_auth/onboarding/view/onboarding_page.dart"; import 'package:ente_auth/services/update_service.dart'; import 'package:ente_auth/ui/home_page.dart'; import 'package:ente_auth/ui/settings/app_update_dialog.dart'; import 'package:flutter/foundation.dart'; import "package:flutter/material.dart"; import 'package:flutter_localizations/flutter_localizations.dart'; class App extends StatefulWidget { const App({Key key}); @override State createState() => _AppState(); } class _AppState extends State { StreamSubscription _signedOutEvent; StreamSubscription _signedInEvent; @override void initState() { _signedOutEvent = Bus.instance.on().listen((event) { if (mounted) { setState(() {}); } }); _signedInEvent = Bus.instance.on().listen((event) { if (mounted) { setState(() {}); } }); UpdateService.instance.shouldUpdate().then((shouldUpdate) { if (shouldUpdate) { Future.delayed(Duration.zero, () { showDialog( context: context, builder: (BuildContext context) { return AppUpdateDialog( UpdateService.instance.getLatestVersionInfo(), ); }, barrierColor: Colors.black.withOpacity(0.85), ); }); } }); super.initState(); } @override void dispose() { super.dispose(); _signedOutEvent.cancel(); _signedInEvent.cancel(); } @override Widget build(BuildContext context) { if (Platform.isAndroid || kDebugMode) { return AdaptiveTheme( light: lightThemeData, dark: darkThemeData, initial: AdaptiveThemeMode.system, builder: (lightTheme, dartTheme) => MaterialApp( title: "ente", themeMode: ThemeMode.system, theme: lightTheme, darkTheme: dartTheme, debugShowCheckedModeBanner: false, supportedLocales: appSupportedLocales, localeListResolutionCallback: localResolutionCallBack, localizationsDelegates: const [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], routes: _getRoutes, ), ); } else { return MaterialApp( title: "ente", themeMode: ThemeMode.system, theme: lightThemeData, darkTheme: darkThemeData, debugShowCheckedModeBanner: false, supportedLocales: appSupportedLocales, localeListResolutionCallback: localResolutionCallBack, localizationsDelegates: const [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], routes: _getRoutes, ); } } Map get _getRoutes { return { "/": (context) => Configuration.instance.hasConfiguredAccount() ? const HomePage() : const OnboardingPage(), }; } }