main.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import 'dart:io';
  2. import 'package:flutter_localizations/flutter_localizations.dart';
  3. import 'package:path_provider/path_provider.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:ustest/Services/DatabaseService.dart';
  6. import 'package:ustest/Services/LocalStorageService.dart';
  7. import 'package:ustest/Services/UserService.dart';
  8. import 'package:ustest/SignInScreen.dart';
  9. import 'package:ustest/MainScreen.dart';
  10. import 'package:get_it/get_it.dart';
  11. import 'package:colorize_logger/colorize_logger.dart';
  12. import 'Services/AutoTestService.dart';
  13. import 'Services/BuildService.dart';
  14. import 'Services/PackageService.dart';
  15. import 'Services/PublishService.dart';
  16. import 'Utilities/PlatformUtils.dart';
  17. import 'package:flutter_gen/gen_l10n/app_localizations.dart';
  18. void main() {
  19. // setup();
  20. // runApp(const MyApp());
  21. initialize();
  22. // runApp(
  23. // LoadingProvider(
  24. // themeData: LoadingThemeData(),
  25. // loadingWidgetBuilder: (ctx, data) {
  26. // return Center(
  27. // child: SizedBox(
  28. // width: 30,
  29. // height: 30,
  30. // child: Container(
  31. // child: CupertinoActivityIndicator(),
  32. // color: Colors.blue,
  33. // ),
  34. // ),
  35. // );
  36. // },
  37. // child: MyApp(),
  38. // ),
  39. // );
  40. }
  41. Future<void> initialize() async {
  42. try {
  43. final getIt = GetIt.instance;
  44. var isWeb = PlatformUtils.isWeb;
  45. if (isWeb) {
  46. Logger.client = ColorizeLoggerClient();
  47. Logger.info('The first log in web');
  48. } else {
  49. if (Logger.isReleaseMode()) {
  50. /// use file
  51. Directory directory = await getApplicationDocumentsDirectory();
  52. final currentDate = DateTime.now();
  53. final fileName =
  54. '${currentDate.year}-${currentDate.month}-${currentDate.day}-logs.txt';
  55. Logger.client =
  56. FileLoggerClient(filePath: '${directory.path}/$fileName');
  57. } else {
  58. Logger.client = ColorizeLoggerClient(); //for debug
  59. }
  60. Logger.info('The first log in app');
  61. /// use sentry
  62. // await SentryFlutter.init(
  63. // (options) {
  64. // options.dsn = 'https://example@sentry.io/add-your-dsn-here';
  65. // },
  66. // );
  67. // Logger.client = SentryLoggerClient();
  68. var dbServcie = new DatabaseService();
  69. getIt.registerSingleton<DatabaseService>(dbServcie);
  70. await dbServcie.initialize();
  71. }
  72. getIt.registerSingleton<LocalStorageService>(LocalStorageService(isWeb));
  73. var userService = new UserService();
  74. getIt.registerSingleton<UserService>(userService);
  75. getIt.registerSingleton<BuildService>(new BuildService());
  76. getIt.registerSingleton<PackageService>(new PackageService());
  77. getIt.registerSingleton<PublishService>(new PublishService());
  78. getIt.registerSingleton<AutoTestService>(new AutoTestService());
  79. await userService.UpdateCurrentUserDetail();
  80. runApp(const MyApp());
  81. } catch (ex) {
  82. Logger.error("initialize exception:$ex");
  83. }
  84. }
  85. class MyApp extends StatelessWidget {
  86. const MyApp();
  87. @override
  88. Widget build(BuildContext context) {
  89. return MaterialApp(
  90. localizationsDelegates: [
  91. AppLocalizations.delegate,
  92. GlobalMaterialLocalizations.delegate,
  93. GlobalWidgetsLocalizations.delegate,
  94. GlobalCupertinoLocalizations.delegate,
  95. ],
  96. supportedLocales: [
  97. Locale('zh'), // Chinese
  98. Locale('en'), // English
  99. ],
  100. routes: {
  101. '/': (context) => MainScreen(),
  102. '/signin': (context) => const SignInScreen(),
  103. },
  104. );
  105. }
  106. }