Files
ingtrakapp/lib/utils/constants.dart
T

66 lines
2.3 KiB
Dart

/// Shared string keys, timings, and layout breakpoints used across the app.
library;
/// Human-readable name shown in the splash screen, app bars, and About tile.
const String kAppName = 'IngTrak';
/// Package / Android application id.
const String kPackageName = 'com.example.myapp';
/// How long the splash screen stays visible before navigating to the shell.
const Duration kSplashDuration = Duration(seconds: 2);
/// Base URL for the personal ingtrak FastAPI backend.
///
/// Override at build/run time:
/// `flutter run --dart-define=API_BASE_URL=https://ingtrak.satoshinakamoto.win`
///
/// Local defaults (when override omitted):
/// - Android emulator → `http://10.0.2.2:8000`
/// - Physical device on LAN → `http://192.168.x.x:8000`
const String kApiBaseUrl = String.fromEnvironment(
'API_BASE_URL',
defaultValue: 'https://ingtrak.satoshinakamoto.win',
);
/// Enable Banking redirect derived from [kApiBaseUrl].
/// Must match backend `REDIRECT_URI` and the Control Panel whitelist.
/// The app opens auth in a WebView and intercepts this callback path for `code`.
String get kEnableBankingRedirectUri {
final base = kApiBaseUrl.endsWith('/')
? kApiBaseUrl.substring(0, kApiBaseUrl.length - 1)
: kApiBaseUrl;
return '$base/api/connect/callback';
}
/// Optional app-scheme bounce used after the http callback (not registered
/// with Enable Banking).
const String kBankRedirectScheme = 'ingtrak';
const String kBankRedirectHost = 'connected';
const String kBankRedirectUri = '$kBankRedirectScheme://$kBankRedirectHost';
/// SharedPreferences keys.
abstract final class StorageKeys {
static const themeMode = 'theme_mode';
static const useRemoteData = 'use_remote_data';
static const txMeta = 'tx_meta_v2';
static const txMetaLegacy = 'tx_meta_v1';
static const bankCache = 'bank_cache_v1';
}
/// Named routes registered on [MaterialApp].
abstract final class AppRoutes {
static const splash = '/';
static const shell = '/shell';
static const itemDetail = '/item';
static const addItem = '/add-item';
}
/// Width thresholds used to adapt padding and card density.
abstract final class Breakpoints {
static const compact = 600.0;
static const medium = 840.0;
}
/// Maximum content width on tablets / large phones so lists stay readable.
const double kMaxContentWidth = 720.0;