62 lines
2.0 KiB
Dart
62 lines
2.0 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 './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();
|
|
//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],
|
|
);
|
|
}
|
|
}
|