main.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'package:pb_authenticator/pages/how_it_works.dart';
  2. import 'package:pb_authenticator/pages/transfer_codes.dart';
  3. import 'state/app_state.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter/services.dart';
  6. import 'package:flutter_localizations/flutter_localizations.dart'
  7. show GlobalMaterialLocalizations, GlobalWidgetsLocalizations;
  8. import 'l10n/app_localizations.dart';
  9. import 'state/file_storage.dart';
  10. import 'package:pb_authenticator_state/state.dart' show Repository;
  11. import 'pages/pages.dart';
  12. import 'package:provider/provider.dart';
  13. import 'config/routes.dart';
  14. void main() {
  15. var repository = Repository(FileStorage());
  16. runApp(MultiProvider(
  17. providers: [ChangeNotifierProvider(create: (_) => AppState(repository))],
  18. child: MainApp(),
  19. ));
  20. }
  21. class MainApp extends StatelessWidget {
  22. // Locale information
  23. final Iterable<Locale> supportedLocales = [const Locale('en')];
  24. final Iterable<LocalizationsDelegate> localizationsDelegates = [
  25. AppLocalizations.delegate,
  26. GlobalMaterialLocalizations.delegate,
  27. GlobalWidgetsLocalizations.delegate,
  28. ];
  29. MainApp({super.key});
  30. @override
  31. Widget build(BuildContext context) {
  32. SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
  33. overlays: [SystemUiOverlay.top]);
  34. // Material/Cupertino app depending on platform
  35. return MaterialApp(
  36. onGenerateTitle: (context) => AppLocalizations.of(context)!.appName,
  37. theme: ThemeData.light(),
  38. darkTheme: ThemeData.dark(),
  39. themeMode: ThemeMode.system,
  40. initialRoute: AppRoutes.home,
  41. routes: {
  42. AppRoutes.home: (context) => const AndroidHomePage(),
  43. AppRoutes.edit: (context) => const AndroidEditPage(),
  44. AppRoutes.add: (context) => const AddPage(),
  45. AppRoutes.addScan: (context) => const ScanQRPage(),
  46. AppRoutes.settings: (context) => const SettingsPage(),
  47. AppRoutes.settingAcknowledgements: (context) =>
  48. const AcknowledgementsPage(),
  49. AppRoutes.howItWorks: (context) => const HowItWorksPage(),
  50. AppRoutes.transferCodes: (context) => const TransferCodesPage(),
  51. },
  52. localizationsDelegates: localizationsDelegates,
  53. supportedLocales: supportedLocales,
  54. );
  55. }
  56. }