Files
venera/lib/foundation/app.dart
2024-10-28 08:57:29 +08:00

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.0";
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();