flutter/lib/main.dart

108 lines
3.7 KiB
Dart
Raw Normal View History

2025-07-21 15:46:30 +08:00
/// 入口文件main.dart
library;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:loopin/IM/controller/chat_controller.dart';
import 'package:loopin/IM/controller/tab_bar_controller.dart';
import 'package:loopin/IM/im_core.dart' as im_core;
import 'package:loopin/IM/im_service.dart';
import 'package:loopin/service/http_config.dart';
import 'package:loopin/utils/common.dart';
import 'package:loopin/utils/lifecycle_handler.dart';
import 'package:loopin/utils/storage.dart';
import 'package:media_kit/media_kit.dart';
import 'package:shirne_dialog/shirne_dialog.dart';
// 引入布局页面
import 'layouts/index.dart';
// 引入路由配置
import 'router/index.dart';
// import 'utils/common.dart';
void main() async {
// 注入tabbar
Get.put(TabBarController());
// 注入会话列表
Get.put(ChatController());
// 监听app前后台状态
WidgetsFlutterBinding.ensureInitialized();
WidgetsBinding.instance.addObserver(LifecycleHandler());
// 禁止横屏
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
// 显示状态栏
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
// 初始化http请求
HttpConfig.init();
// 初始化get_storage存储
await GetStorage.init();
// 初始化media_kit视频套件
WidgetsFlutterBinding.ensureInitialized();
MediaKit.ensureInitialized();
// 检测登录状态
if (Common.isLogin()) {
// 初始化Im并进行Im登录
await im_core.ImCore.init(sdkAppId: 1600080789);
// 缺少userSig先用固定值ios用1587安卓用188
await ImService.instance.login(userID: Storage.read('userId'), userSig: Storage.read('userSig'));
// String userId = '1909990634551795712'; //15877777777
// String userId = '18832510385';
// String userSig =
// 'eJwtzcsOgjAQBdB-6dqQKThth8QdG*JrIRHjTqGYiagNDzUx-rsVWN5zJ3M-IlvtgqdtRCzCAMRsyFzae8cVDywJiAhUNEeUmlDLcDpry*vJOS5FLBUAGNCGxsa*HTfWOyKGvhq149vftH8DhHLSli9*Jdrk2hqTVgdK2dKxXSfKbYuXpnPSu1zl*0fd18skg2Ihvj*7ADL4';
// 'eJwtzLEKwjAUheF3ySwlNzXNbcHFxSIOaqTWUUgsF1FDG2tEfHdj2-F8P5wPO2x00tuWFUwknM2GTcbePV1oYEBMhQSeopxyZ65n58iwAjLOOXKF*VhscNTa6FJKEdOonm5-UxJQpZhN2lET3599Xllbv9ZBH2uHuDfvst5tG6FX0EFYVhpOpZ973z8W7PsDmYwyIw__';
// await ImService.instance.login(userID: userId, userSig: userSig);
}
runApp(App());
}
class App extends StatelessWidget {
App({super.key});
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: '无终街',
locale: const Locale('zh'),
supportedLocales: const [
Locale('zh'),
],
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFFFF9900)),
useMaterial3: true,
),
home: const Layout(),
initialRoute: '/',
getPages: routePages,
navigatorKey: MyDialog.navigatorKey,
// 注入 RouteObserver
navigatorObservers: [routeObserver],
// 注入到 GetX
builder: (context, child) {
Get.put<RouteObserver<PageRoute>>(routeObserver);
return child!;
},
);
}
}