import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:jpush_flutter/jpush_flutter.dart'; import 'package:redux/redux.dart'; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:flutter/foundation.dart'; import './Localizations.dart'; import 'model/UserInfo.dart'; import 'net/HttpManager.dart'; import 'net/Result.dart'; import 'pages/loginFirst.dart'; import 'redux/AppState.dart'; import 'pages/Home.dart'; import './styles/colors.dart'; class MobileCyberGamesApp extends StatelessWidget { const MobileCyberGamesApp(this.store); final Store store; @override Widget build(BuildContext context) { return StoreProvider( store: store, child: MaterialApp( title: '微电竞', supportedLocales: [ const Locale('en'), // English const Locale('zh'), // China ], localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ChineseCupertinoLocalizations.delegate, ], theme: ThemeData( backgroundColor: BG_COLOR, primaryColor: PRIMARY_COLOR, accentColor: PRIMARY_COLOR, appBarTheme: AppBarTheme(color: SUB_COLOR), scaffoldBackgroundColor: BG_COLOR, textTheme: TextTheme( subhead: TextStyle(color: Colors.white), ), buttonTheme: ButtonThemeData( buttonColor: PRIMARY_COLOR, splashColor: PRIMARY_COLOR, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(0))), ), ), home: store.state.userInfo != null ? HomePage() : LoginFirst(), routes: {'/home': (BuildContext context) => HomePage()}, ), ); } } Future main() async { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light.copyWith( statusBarColor: Colors.transparent, )); await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); final JPush jpush = JPush(); jpush.setup( appKey: 'f67ab1d1abce65a630f2bf1e', channel: 'theChannel', production: true, debug: true, ); jpush.applyPushAuthority(NotificationSettingsIOS(sound: true, alert: true, badge: true)); final prefs = await SharedPreferences.getInstance(); HttpManager.token = prefs.getString('token') ?? ''; if (debugMode() && HttpManager.token.isEmpty) { HttpManager.token = '' 'eyJhbGciOiJIUzI1NiJ9.eyJqdGkiO' 'iI2Mzk2MDcxOS00ODBkLTRmMDgtYmF' 'mYi1mMjdhN2ZhN2JmNWMiLCJpc3MiO' 'iJhZG1pbiIsImlhdCI6MTU2NDAyMzM' '0Mywic3ViIjoiODQ4NDgiLCJleHAiO' 'jE1NjY2MTUzNDN9.UGLtR6y6nNzo9t' '94Wzfpk1Bo3YNIMuaSxEAIEebkVfs'; } Result result = await HttpManager.get('userInfo/getUserInfo'); AppState state = AppState.empty(); if (result.success && result.data != null) { UserInfo userInfo = UserInfo.fromJson(result.data); state.userInfo = userInfo; jpush.setAlias(userInfo.id.toString()).then((map) {}); } Store store = Store(appReducer, initialState: state); FlutterBugly.init(androidAppId: '5f31e941fc', iOSAppId: ''); FlutterBugly.postCatchedException(() { runApp(MobileCyberGamesApp(store)); }); } bool debugMode() { if (kReleaseMode) { print('release mode'); } else { print('debug mode'); } return !kReleaseMode; }