main.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import 'package:flutter_localizations/flutter_localizations.dart';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/services.dart';
  4. import 'package:jpush_flutter/jpush_flutter.dart';
  5. import 'package:redux/redux.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter_redux/flutter_redux.dart';
  8. import 'package:shared_preferences/shared_preferences.dart';
  9. import 'package:flutter_bugly/flutter_bugly.dart';
  10. import 'package:flutter/foundation.dart';
  11. import './Localizations.dart';
  12. import 'model/UserInfo.dart';
  13. import 'net/HttpManager.dart';
  14. import 'net/Result.dart';
  15. import 'pages/loginFirst.dart';
  16. import 'redux/AppState.dart';
  17. import 'pages/Home.dart';
  18. import './styles/colors.dart';
  19. class MobileCyberGamesApp extends StatelessWidget {
  20. const MobileCyberGamesApp(this.store);
  21. final Store<AppState> store;
  22. @override
  23. Widget build(BuildContext context) {
  24. return StoreProvider<AppState>(
  25. store: store,
  26. child: MaterialApp(
  27. title: '微电竞',
  28. supportedLocales: [
  29. const Locale('en'), // English
  30. const Locale('zh'), // China
  31. ],
  32. localizationsDelegates: [
  33. GlobalMaterialLocalizations.delegate,
  34. GlobalWidgetsLocalizations.delegate,
  35. ChineseCupertinoLocalizations.delegate,
  36. ],
  37. theme: ThemeData(
  38. backgroundColor: BG_COLOR,
  39. primaryColor: PRIMARY_COLOR,
  40. accentColor: PRIMARY_COLOR,
  41. appBarTheme: AppBarTheme(color: SUB_COLOR),
  42. scaffoldBackgroundColor: BG_COLOR,
  43. textTheme: TextTheme(
  44. subhead: TextStyle(color: Colors.white),
  45. ),
  46. buttonTheme: ButtonThemeData(
  47. buttonColor: PRIMARY_COLOR,
  48. splashColor: PRIMARY_COLOR,
  49. shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(0))),
  50. ),
  51. ),
  52. home: store.state.userInfo != null ? HomePage() : LoginFirst(),
  53. routes: {'/home': (BuildContext context) => HomePage()},
  54. ),
  55. );
  56. }
  57. }
  58. Future<void> main() async {
  59. SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light.copyWith(
  60. statusBarColor: Colors.transparent,
  61. ));
  62. await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
  63. final JPush jpush = JPush();
  64. jpush.setup(
  65. appKey: 'f67ab1d1abce65a630f2bf1e',
  66. channel: 'theChannel',
  67. production: true,
  68. debug: true,
  69. );
  70. jpush.applyPushAuthority(NotificationSettingsIOS(sound: true, alert: true, badge: true));
  71. final prefs = await SharedPreferences.getInstance();
  72. HttpManager.token = prefs.getString('token') ?? '';
  73. if (debugMode() && HttpManager.token.isEmpty) {
  74. HttpManager.token = ''
  75. 'eyJhbGciOiJIUzI1NiJ9.eyJqdGkiO'
  76. 'iI2Mzk2MDcxOS00ODBkLTRmMDgtYmF'
  77. 'mYi1mMjdhN2ZhN2JmNWMiLCJpc3MiO'
  78. 'iJhZG1pbiIsImlhdCI6MTU2NDAyMzM'
  79. '0Mywic3ViIjoiODQ4NDgiLCJleHAiO'
  80. 'jE1NjY2MTUzNDN9.UGLtR6y6nNzo9t'
  81. '94Wzfpk1Bo3YNIMuaSxEAIEebkVfs';
  82. }
  83. Result result = await HttpManager.get('userInfo/getUserInfo');
  84. AppState state = AppState.empty();
  85. if (result.success && result.data != null) {
  86. UserInfo userInfo = UserInfo.fromJson(result.data);
  87. state.userInfo = userInfo;
  88. jpush.setAlias(userInfo.id.toString()).then((map) {});
  89. }
  90. Store<AppState> store = Store<AppState>(appReducer, initialState: state);
  91. FlutterBugly.init(androidAppId: '5f31e941fc', iOSAppId: '');
  92. FlutterBugly.postCatchedException(() {
  93. runApp(MobileCyberGamesApp(store));
  94. });
  95. }
  96. bool debugMode() {
  97. if (kReleaseMode) {
  98. print('release mode');
  99. } else {
  100. print('debug mode');
  101. }
  102. return !kReleaseMode;
  103. }