import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:get/get.dart'; import 'package:wgshare/common/store/user_store.dart'; import 'package:wgshare/utils/package_info_util.dart'; import 'package:wgshare/utils/storage.dart'; import 'package:wgshare/utils/utils.dart'; import 'common/config/app_config.dart'; import 'common/config/colorUtils.dart'; import 'routes/app_pages.dart'; import 'routes/app_routes.dart'; void main() async { Get.testMode = true; WidgetsFlutterBinding.ensureInitialized(); PackageInfo packageInfo = await PackageInfoUtil.init(); PackageInfoUtil.getInstance(packageInfo); // 初始化包数据 /// 初始化本地存储 await Get.putAsync(() => StorageService().init()); /// 初始化UserStore Get.put(UserStore().init()); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return ScreenUtilInit( designSize: const Size(375, 812), minTextAdapt: true, splitScreenMode: true, builder: (context, child) { return GetMaterialApp( title: '智汇享', debugShowCheckedModeBanner: false, theme: ThemeData( brightness: Brightness.light, primarySwatch: createMaterialColor(const Color.fromRGBO(85, 117, 242, 1)), primaryColor: const Color.fromRGBO(85, 117, 242, 1), primaryTextTheme: TextTheme( bodyLarge: TextStyle(fontSize: 14.sp, color: Colors.black87), ), useMaterial3: false, // 修改亮色主题的主题颜色 colorScheme: const ColorScheme.light(primary: Color.fromRGBO(85, 117, 242, 1)), ), enableLog: true, logWriterCallback: (text, {bool isError = false}) { // isError ? LoggerUtils.e(text) : LoggerUtils.i(text); }, // 这里是国际化支持,确保添加flutter_localizations依赖 supportedLocales: const [ Locale('zh', 'CN'), // 中文简体 // 其他支持的locale可以在这里添加 ], localizationsDelegates: const [ // ...其他delegates GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, // 如果你使用了Cupertino风格的组件 RefreshLocalizations.delegate, // ...添加其他必要的delegates ], localeResolutionCallback: (locale, supportedLocales) { // 在这里可以实现自定义的locale解析逻辑 // 如果需要,返回你想要的Locale对象 return locale; }, //默认专场动画 defaultTransition: Transition.fade, //初始化路由页面 initialRoute: (UserStore.to.token?.isNotEmpty ?? false) && UserStore.to.userInfoEntity.value != null && UserStore.to.loginType != null && UserStore.to.loginType == AppConfig.NORMAL_LOGIN ? Routes.startPage : Routes.loginPage, /// 路由表 getPages: AppPages.pages, routingCallback: (routing) { String? currentRouter = routing?.current; debugPrint("wgs输出===:当前路由:${routing?.current}"); }, 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'), ); }); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); // This widget is the home page of your application. It is stateful, meaning // that it has a State object (defined below) that contains fields that affect // how it looks. // This class is the configuration for the state. It holds the values (in this // case the title) provided by the parent (in this case the App widget) and // used by the build method of the State. Fields in a Widget subclass are // always marked "final". final String title; @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { int _counter = 0; void _incrementCounter() { setState(() { // This call to setState tells the Flutter framework that something has // changed in this State, which causes it to rerun the build method below // so that the display can reflect the updated values. If we changed // _counter without calling setState(), then the build method would not be // called again, and so nothing would appear to happen. _counter++; }); } @override Widget build(BuildContext context) { // This method is rerun every time setState is called, for instance as done // by the _incrementCounter method above. // // The Flutter framework has been optimized to make rerunning build methods // fast, so that you can just rebuild anything that needs updating rather // than having to individually change instances of widgets. return Scaffold( appBar: AppBar( // TRY THIS: Try changing the color here to a specific color (to // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar // change color while the other colors stay the same. backgroundColor: Theme.of(context).colorScheme.inversePrimary, // Here we take the value from the MyHomePage object that was created by // the App.build method, and use it to set our appbar title. title: Text(widget.title), ), body: Center( // Center is a layout widget. It takes a single child and positions it // in the middle of the parent. child: Column( // Column is also a layout widget. It takes a list of children and // arranges them vertically. By default, it sizes itself to fit its // children horizontally, and tries to be as tall as its parent. // // Column has various properties to control how it sizes itself and // how it positions its children. Here we use mainAxisAlignment to // center the children vertically; the main axis here is the vertical // axis because Columns are vertical (the cross axis would be // horizontal). // // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" // action in the IDE, or press "p" in the console), to see the // wireframe for each widget. mainAxisAlignment: MainAxisAlignment.center, children: [ const Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.headlineMedium, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: const Icon(Icons.add), ), // This trailing comma makes auto-formatting nicer for build methods. ); } }