MyNewAppWriteTankApp/lib/utils/app_initializer.dart
2025-08-28 09:47:58 +02:00

68 lines
2.2 KiB
Dart

import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:window_manager/window_manager.dart';
import 'package:intl/date_symbol_data_local.dart';
import './extensions/http_overrides.dart';
/// A utility class for initializing the Flutter application.
///
/// This class ensures Flutter bindings are initialized, configures
/// window dimensions for desktop applications, and sets the device
/// orientation for mobile platforms.
class AppInitializer {
/// Initializes the application setup.
///
/// Ensures Flutter bindings are initialized, sets up window dimensions,
/// and configures device orientation settings.
static initialize() async {
_ensureInitialized();
await _setupWindowDimensions();
await _setupDeviceOrientation();
await _setupDateFormating();
//dotENV initial
await dotenv.load(fileName: '.env');
//Overrides initial
HttpOverrides.global = MyHttpOverrides();
}
/// Ensures that Flutter bindings are initialized.
static _ensureInitialized() {
WidgetsFlutterBinding.ensureInitialized();
}
/// Configures the window dimensions for desktop applications.
///
/// Ensures the window manager is initialized and sets a minimum window size.
static _setupWindowDimensions() async {
// Flutter maintains web on its own.
if (kIsWeb || Platform.isAndroid || Platform.isIOS) return;
await windowManager.ensureInitialized();
windowManager.setMinimumSize(const Size(425, 600));
}
/// Configures the device orientation and system UI overlays.
///
/// Locks the device orientation to portrait mode and ensures system
/// UI overlays are manually configured.
static _setupDeviceOrientation() async {
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
await SystemChrome.setEnabledSystemUIMode(
SystemUiMode.manual,
overlays: [SystemUiOverlay.bottom, SystemUiOverlay.top],
);
}
// Initialisiert die Lokalisierungsdaten für eine bestimmte Sprache
static Future<void> _setupDateFormating() async {
await initializeDateFormatting('de_DE', null);
}
}