import 'package:flutter/foundation.dart'; import '../data/repositories/settings_repository.dart'; import '../data/services/native_bridge.dart'; /// Applies the persisted "Prevent CarDash from sleeping" preference to the /// Android window. The flag only applies while this window is visible. class DisplayController extends ChangeNotifier { DisplayController(this._platform, this._settings) : _keepScreenOn = _settings.keepScreenOn; final LauncherPlatform _platform; final SettingsRepository _settings; bool _keepScreenOn; bool _disposed = false; bool get keepScreenOn => _keepScreenOn; Future initialize() => _apply(); Future setKeepScreenOn(bool enabled) async { if (enabled == _keepScreenOn) return; _keepScreenOn = enabled; await _settings.setKeepScreenOn(enabled); await _apply(); _notify(); } /// Reapplies after resume, when Android may have recreated the window. Future apply() => _apply(); Future _apply() async { try { await _platform.setKeepScreenOn(_keepScreenOn); } catch (_) { // Display flags are best-effort; settings remain persisted. } } void _notify() { if (!_disposed) notifyListeners(); } @override void dispose() { _disposed = true; super.dispose(); } }