import 'dart:io';

import 'package:auto_updater/auto_updater.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:making_school_asignment_app/common/config/app_config.dart';
import 'package:making_school_asignment_app/common/config/colorUtils.dart';
import 'package:making_school_asignment_app/common/store/user_store.dart';
import 'package:making_school_asignment_app/common/utils/storage.dart';
import 'package:making_school_asignment_app/common/utils/utils.dart';
import 'package:making_school_asignment_app/routes/app_pages.dart';

import 'common/config/request_config.dart';
import 'common/utils/app_upgrade/upgradeLogic.dart';

void main() async {
// 在测试模式下运行Get
  Get.testMode = true;
  FlutterNativeSplash.preserve(widgetsBinding: WidgetsFlutterBinding.ensureInitialized());

  /// 初始化本地存储
  await Get.putAsync<StorageService>(() => StorageService.init());

  /// 初始化UserStore
  await Get.putAsync<UserStore>(() async => UserStore().init());

  // Windows
  if (Platform.isWindows) {
    String feedURL = '${RequestConfig.imgUrl}infra-app/making_school_asignment_app/3/appcast.xml';
    await autoUpdater.setFeedURL(feedURL);
    await autoUpdater.checkForUpdates();
    await autoUpdater.setScheduledCheckInterval(3600);
  }

  SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
      statusBarColor: Colors.transparent, //状态栏背景颜色
      statusBarIconBrightness: Brightness.light // dark:一般显示黑色   light：一般显示白色
      ));
  SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky, overlays: [SystemUiOverlay.top]); // 屏幕刘海
  await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); // 屏幕强制竖屏
  runApp(const MyApp());

  Future.delayed(const Duration(seconds: 3), () => FlutterNativeSplash.remove());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.

  @override
  Widget build(BuildContext context) {
    // String? oldRouter;
    return ScreenUtilInit(
      designSize: const Size(AppConfig.UI_WIDTH, AppConfig.UI_HEIGHT),
      /*  minTextAdapt: true,
      splitScreenMode: true,*/
      builder: () => GetMaterialApp(
        title: '点智学',
        debugShowCheckedModeBanner: false,
        theme: ThemeData(
            brightness: Brightness.light,
            primarySwatch: createMaterialColor(const Color(0xFF8C68FF)),
            primaryColor: const Color(0xFF8C68FF),
            // textTheme: Typography.englishLike2018.apply(fontSizeFactor: 1.sp,),
            primaryTextTheme: TextTheme(
              bodyLarge: TextStyle(fontSize: 14.sp, color: Colors.black87),
            ),
            useMaterial3: false,
            colorScheme: const ColorScheme.light(
              // 修改亮色主题的主题颜色
              primary: Color(0xFF8C68FF),
            )),
        enableLog: true,
        logWriterCallback: (text, {bool isError = false}) {
          // isError ? LoggerUtils.e(text) : LoggerUtils.i(text);
        },
        routingCallback: (routing) {
          String? currentRouter = routing?.current;
          // print("当前页面  ${currentRouter}");
          // print("当前路由：${currentRouter}");
          // if ([Routes.home, Routes.myInfo].contains(currentRouter)) {
          //   SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
          //     statusBarIconBrightness: Brightness.light,
          //     systemStatusBarContrastEnforced: false,
          //   ));
          // }

          // if (Routes.reviewHomework == currentRouter) {
          //   // SystemChrome.setEnabledSystemUIMode(SystemUiMode.leanBack, overlays: []);
          // } else if (oldRouter == Routes.reviewHomework) {
          //   // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); // 屏幕刘海
          // }
          // oldRouter = currentRouter;
        },
        // 这里是国际化支持，确保添加flutter_localizations依赖
        supportedLocales: const [
          Locale('zh', 'CN'), // 中文简体
          // 其他支持的locale可以在这里添加
        ],
        localizationsDelegates: const [
          // ...其他delegates
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
          GlobalCupertinoLocalizations.delegate, // 如果你使用了Cupertino风格的组件
          // ...添加其他必要的delegates
        ],
        localeResolutionCallback: (locale, supportedLocales) {
          // 在这里可以实现自定义的locale解析逻辑
          // 如果需要，返回你想要的Locale对象
          return locale;
        },
        //默认专场动画
        defaultTransition: getTransition(),
        //初始化路由页面
        initialRoute: Routes.startPage,

        /// 路由表
        initialBinding: MainBinding(),
        getPages: AppPages.pages,
        builder: EasyLoading.init(
          builder: (context, child) {
            return MediaQuery(
              //Setting font does not change with system font size
              data: MediaQuery.of(context).copyWith(textScaler: const TextScaler.linear(1.0)),
              child: Scaffold(
                body: GestureDetector(onTap: () => Utils.hideKeyboard(), child: child),
              ),
            );
          },
        ),
        // home: const MyHomePage(title: 'Flutter Demo Home Page'),
      ),
    );
  }
}

/// 默认 MainBinding
class MainBinding implements Bindings {
  @override
  void dependencies() async {
    /// APP 更新
    Get.put(UpgradeLogic(), permanent: true);
  }
}
