main.dart 3.3 KB

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