mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
97 lines
2.3 KiB
Dart
97 lines
2.3 KiB
Dart
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.3";
|
|
|
|
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<NavigatorState>();
|
|
|
|
GlobalKey<NavigatorState>? 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<void> 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();
|