main.dart 3.3 KB

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