main.dart 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter/services.dart';
  4. import 'package:provider/provider.dart';
  5. import 'package:bot_toast/bot_toast.dart';
  6. import 'package:twong/pages/tabs.dart';
  7. import 'package:twong/utils/index.dart';
  8. import 'package:twong/utils/sentry.dart';
  9. import 'package:twong/router/index.dart';
  10. import 'package:twong/config/style.dart';
  11. import 'package:twong/config/theme.dart';
  12. import 'package:twong/providers/index.dart';
  13. void main() async {
  14. WidgetsFlutterBinding.ensureInitialized();
  15. await SentryUtils.initPlatformState();
  16. runZoned((){
  17. ErrorWidget.builder = (FlutterErrorDetails details){
  18. Zone.current.handleUncaughtError(details.exception, details.stack);
  19. ///出现异常时会进入下方页面(flutter原有的红屏),
  20. // return ExceptionPageState(details.exception.toString(),details.stack.toString()).generateWidget();
  21. return Container();
  22. };
  23. }, onError: (Object error,StackTrace trace){
  24. ///你可以将下面日志上传到服务器,用于release后的错误处理
  25. Log.e(error);
  26. SentryUtils.reportError(error, trace);
  27. });
  28. try {
  29. Log.init();
  30. initRouterList();
  31. Cache.initial().then((e) => runApp(MainApp()));
  32. SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
  33. } catch (error, trace) {
  34. SentryUtils.reportError(error, trace);
  35. }
  36. }
  37. class MainApp extends StatelessWidget {
  38. final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<
  39. NavigatorState>();
  40. final SystemUiOverlayStyle _style = SystemUiOverlayStyle(
  41. statusBarColor: Colors.transparent);
  42. @override
  43. Widget build(BuildContext context) {
  44. Cache.setKey(navigatorKey);
  45. SystemChrome.setSystemUIOverlayStyle(_style);
  46. return MultiProvider(
  47. providers: providers,
  48. child: MaterialApp(
  49. debugShowCheckedModeBanner: false,
  50. home: Tabs(),
  51. theme: ThemeData(
  52. fontFamily: "HuaWen",
  53. cursorColor: Colors.white,
  54. backgroundColor: DColors.Main,
  55. splashFactory: const NoSplashFactory()
  56. ),
  57. builder: BotToastInit(),
  58. navigatorKey: navigatorKey,
  59. onGenerateRoute: onGenerateRoute,
  60. navigatorObservers: [BotToastNavigatorObserver()]
  61. ));
  62. }
  63. }