123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- import 'dart:ui';
- import 'package:flutter/material.dart';
- import 'package:flutter_easyloading/flutter_easyloading.dart';
- import 'package:flutter_localizations/flutter_localizations.dart';
- import 'package:get/get.dart';
- import 'package:o2oa_all_platform/global.dart';
- import 'package:o2oa_all_platform/common/index.dart';
- import 'package:pull_to_refresh/pull_to_refresh.dart';
- Future<void> main() async {
- await Global.init();
- runApp(const MyApp());
- }
- class MyApp extends StatefulWidget {
- const MyApp({Key? key}) : super(key: key);
- @override
- State<StatefulWidget> createState() => MyAppState();
- }
- class MyAppState extends State<MyApp> {
- // 主题模式 light dark
- ThemeMode mode = ThemeMode.system;
- // 主题
- ThemeData lightTheme = AppTheme.defaultLightTheme;
- ThemeData darkTheme = AppTheme.defaultDarkTheme;
- Locale? _locale = Languages.locale;
- bool needGrey = false;
- final _eventMsgId = 'MyApp';
- @override
- void initState() {
- // 是否需要全局黑白
- needGrey = SharedPreferenceService.to.getBool(
- SharedPreferenceService.appStyleNeedGreyKey,
- defaultValue: false);
- loadThemeMode();
- _locale = LanguageListExt.getCurrentLanguage().getLocale();
- // 监听黑白变化
- EventBus().on(EventBus.greyColorChangeGlobalMsg, _eventMsgId, (arg) {
- OLogger.d('接收到了 全局黑白的变化');
- changeGreyColor();
- });
- super.initState();
- }
- /// 全局黑白 或者 还原
- void changeGreyColor() {
- setState(() {
- needGrey = SharedPreferenceService.to.getBool(
- SharedPreferenceService.appStyleNeedGreyKey,
- defaultValue: false);
- });
- }
- /// 主题皮肤相关信息
- void loadThemeMode() {
- mode = SharedPreferenceService.to.getThemeMode();
- OLogger.d('当前系统主题mode: ${mode.name}');
- final skin = SharedPreferenceService.to.getThemeSkin();
- lightTheme = AppTheme.getLightThemeBySkin(skin);
- darkTheme = AppTheme.getDarkThemeBySkin(skin);
- OLogger.d('当前系统主题皮肤: ${skin.name}');
- }
- // This widget is the root of your application.
- @override
- Widget build(BuildContext context) {
- OLogger.d('页面根 MyApp build 。。。。。。。。。。。。');
- return O2UI.greyWidget(
- RefreshConfiguration(
- headerBuilder: () => const ClassicHeader(),
- footerBuilder: () => const ClassicFooter(),
- hideFooterWhenNotFull: true,
- headerTriggerDistance: 80,
- maxOverScrollExtent: 100,
- footerTriggerDistance: 150,
- child: OrientationBuilder(builder: (context, orientation) {
- final isPad = SharedPreferenceService.to
- .getBool(SharedPreferenceService.isPadKey);
- final screenWidth = MediaQuery.of(context).size.width;
- OLogger.d(
- 'OrientationBuilder, orientation: $orientation isPad:$isPad screenWidth:$screenWidth');
- return isPad && orientation == Orientation.landscape
- ? blurBackground(screenWidth)
- : getMApp();
- }),
- ),
- needGrey);
- }
- Widget blurBackground(double screenWidth) {
- return Stack(alignment: Alignment.topLeft, children: [
- const Positioned.fill(
- child: AssetsImageView(
- 'launch_background.png',
- fit: BoxFit.fill,
- ),
- ),
- Positioned.fill(
- child: BackdropFilter(
- filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
- child: FractionallySizedBox(
- widthFactor: screenWidth < 750 ? 1.0 : 750 / screenWidth,
- child: getMApp(),
- )),
- )
- ]);
- }
- GetMaterialApp getMApp() {
- return GetMaterialApp(
- title: 'appName'.tr,
- enableLog: true,
- themeMode: mode,
- theme: lightTheme, // 亮色主题
- darkTheme: darkTheme, // 暗色主题
- logWriterCallback: OLogger.writeFromGetx,
- defaultTransition: Transition.fade,
- initialRoute: O2OARoutes.splash,
- getPages: O2OAPages.pages,
- unknownRoute: O2OAPages.unknownRoute,
- // loading插件
- builder: EasyLoading.init(),
- // 多语言
- locale: _locale,
- fallbackLocale: Languages.fallbackLocale,
- translations: Languages(),
- localizationsDelegates: const [
- GlobalMaterialLocalizations.delegate,
- GlobalWidgetsLocalizations.delegate,
- GlobalCupertinoLocalizations.delegate,
- RefreshLocalizations.delegate,
- ],
- supportedLocales: const [
- Locale('zh', 'CN'),
- Locale('en', 'US'),
- Locale('zh', 'HK'),
- ],
- );
- }
- }
|