import 'dart:io'; import 'dart:math'; import 'dart:ui'; import 'package:collection/collection.dart'; import 'package:fl_clash/common/common.dart'; import 'package:fl_clash/enum/enum.dart'; import 'package:fl_clash/models/models.dart'; import 'package:flutter/material.dart'; const appName = "FlClash"; const appHelperService = "FlClashHelperService"; const coreName = "clash.meta"; const browserUa = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"; const packageName = "com.follow.clash"; final unixSocketPath = "/tmp/FlClashSocket_${Random().nextInt(10000)}.sock"; const helperPort = 47890; const maxTextScale = 1.4; const minTextScale = 0.8; final baseInfoEdgeInsets = EdgeInsets.symmetric( vertical: 16.ap, horizontal: 16.ap, ); final defaultTextScaleFactor = WidgetsBinding.instance.platformDispatcher.textScaleFactor; const httpTimeoutDuration = Duration(milliseconds: 5000); const moreDuration = Duration(milliseconds: 100); const animateDuration = Duration(milliseconds: 100); const midDuration = Duration(milliseconds: 200); const commonDuration = Duration(milliseconds: 300); const defaultUpdateDuration = Duration(days: 1); const mmdbFileName = "geoip.metadb"; const asnFileName = "ASN.mmdb"; const geoIpFileName = "GeoIP.dat"; const geoSiteFileName = "GeoSite.dat"; final double kHeaderHeight = system.isDesktop ? !Platform.isMacOS ? 40 : 28 : 0; const profilesDirectoryName = "profiles"; const localhost = "127.0.0.1"; const clashConfigKey = "clash_config"; const configKey = "config"; const double dialogCommonWidth = 300; const repository = "chen08209/FlClash"; const defaultExternalController = "127.0.0.1:9090"; const maxMobileWidth = 600; const maxLaptopWidth = 840; const defaultTestUrl = "https://www.gstatic.com/generate_204"; final commonFilter = ImageFilter.blur( sigmaX: 5, sigmaY: 5, tileMode: TileMode.mirror, ); const navigationItemListEquality = ListEquality(); const connectionListEquality = ListEquality(); const stringListEquality = ListEquality(); const intListEquality = ListEquality(); const logListEquality = ListEquality(); const groupListEquality = ListEquality(); const externalProviderListEquality = ListEquality(); const packageListEquality = ListEquality(); const hotKeyActionListEquality = ListEquality(); const stringAndStringMapEquality = MapEquality(); const stringAndStringMapEntryIterableEquality = IterableEquality>(); const delayMapEquality = MapEquality>(); const stringSetEquality = SetEquality(); const keyboardModifierListEquality = SetEquality(); const viewModeColumnsMap = { ViewMode.mobile: [2, 1], ViewMode.laptop: [3, 2], ViewMode.desktop: [4, 3], }; // const proxiesStoreKey = PageStorageKey('proxies'); // const toolsStoreKey = PageStorageKey('tools'); // const profilesStoreKey = PageStorageKey('profiles'); const defaultPrimaryColor = 0XFFD8C0C3; double getWidgetHeight(num lines) { return max(lines * 84 + (lines - 1) * 16, 0).ap; } const maxLength = 150; final mainIsolate = "FlClashMainIsolate"; final serviceIsolate = "FlClashServiceIsolate"; const defaultPrimaryColors = [ 0xFF795548, 0xFF03A9F4, 0xFFFFFF00, 0XFFBBC9CC, 0XFFABD397, defaultPrimaryColor, 0XFF665390, ]; const scriptTemplate = """ const main = (config) => { return config; }""";