import 'dart:io'; import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'appdata.dart'; export "widget_utils.dart"; export "context.dart"; class _App { final version = "1.0.6"; bool get isAndroid => Platform.isAndroid; bool get isIOS => Platform.isIOS; bool get isWindows => Platform.isWindows; bool get isLinux => Platform.isLinux; bool get isMacOS => Platform.isMacOS; bool get isDesktop => Platform.isWindows || Platform.isLinux || Platform.isMacOS; bool get isMobile => Platform.isAndroid || Platform.isIOS; Locale get locale { Locale deviceLocale = PlatformDispatcher.instance.locale; if (deviceLocale.languageCode == "zh" && deviceLocale.scriptCode == "Hant") { deviceLocale = const Locale("zh", "TW"); } if (appdata.settings['language'] != 'system') { return Locale( appdata.settings['language'].split('-')[0], appdata.settings['language'].split('-')[1], ); } return deviceLocale; } late String dataPath; late String cachePath; final rootNavigatorKey = GlobalKey(); GlobalKey? mainNavigatorKey; BuildContext get rootContext => rootNavigatorKey.currentContext!; void rootPop() { rootNavigatorKey.currentState?.pop(); } void pop() { if (rootNavigatorKey.currentState?.canPop() ?? false) { rootNavigatorKey.currentState?.pop(); } else if (mainNavigatorKey?.currentState?.canPop() ?? false) { mainNavigatorKey?.currentState?.pop(); } } var mainColor = Colors.blue; Future init() async { cachePath = (await getApplicationCacheDirectory()).path; dataPath = (await getApplicationSupportDirectory()).path; mainColor = switch (appdata.settings['color']) { 'red' => Colors.red, 'pink' => Colors.pink, 'purple' => Colors.purple, 'green' => Colors.green, 'orange' => Colors.orange, 'blue' => Colors.blue, 'yellow' => Colors.yellow, 'cyan' => Colors.cyan, _ => Colors.blue, }; } Function? _forceRebuildHandler; void registerForceRebuild(Function handler) { _forceRebuildHandler = handler; } void forceRebuild() { _forceRebuildHandler?.call(); } } // ignore: non_constant_identifier_names final App = _App();