diff --git a/lib/main.dart b/lib/main.dart index 5e87298f9..e412ad67e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -15,6 +15,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:macos_window_utils/window_manipulator.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:screen_brightness/screen_brightness.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:smtc_windows/smtc_windows.dart' if (dart.library.html) 'package:fladder/stubs/web/smtc_web.dart'; import 'package:universal_html/html.dart' as html; @@ -85,6 +86,10 @@ void main(List args) async { await SMTCWindows.initialize(); } + if (_isDesktop) { + await ScreenBrightness().setAutoReset(false); + } + if (kIsWeb) { html.document.onContextMenu.listen((event) => event.preventDefault()); final result = await loadConfig(); diff --git a/lib/providers/settings/book_viewer_settings_provider.dart b/lib/providers/settings/book_viewer_settings_provider.dart index 206da28e3..6f688ccf2 100644 --- a/lib/providers/settings/book_viewer_settings_provider.dart +++ b/lib/providers/settings/book_viewer_settings_provider.dart @@ -1,8 +1,8 @@ import 'dart:convert'; -import 'package:flutter/widgets.dart'; - import 'package:collection/collection.dart'; +import 'package:flutter/foundation.dart'; + import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:screen_brightness/screen_brightness.dart'; @@ -120,10 +120,16 @@ class BookViewerSettingsNotifier extends StateNotifier super.state = value; } + static bool get _canControlBrightness => + !kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || + defaultTargetPlatform == TargetPlatform.iOS); + void setScreenBrightness(double? value) async { state = state.copyWith( screenBrightness: () => value, ); + if (!_canControlBrightness) return; if (state.screenBrightness != null) { ScreenBrightness().setApplicationScreenBrightness(state.screenBrightness!); } else { @@ -132,6 +138,7 @@ class BookViewerSettingsNotifier extends StateNotifier } void setSavedBrightness() { + if (!_canControlBrightness) return; if (state.screenBrightness != null) { ScreenBrightness().setApplicationScreenBrightness(state.screenBrightness!); } diff --git a/lib/providers/settings/video_player_settings_provider.dart b/lib/providers/settings/video_player_settings_provider.dart index 14734310c..e64aee83a 100644 --- a/lib/providers/settings/video_player_settings_provider.dart +++ b/lib/providers/settings/video_player_settings_provider.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -32,7 +33,13 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier + !kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || + defaultTargetPlatform == TargetPlatform.iOS); + void setScreenBrightness(double? value) async { + if (!_canControlBrightness) return; state = state.copyWith( screenBrightness: value, ); @@ -44,6 +51,7 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier { @override void dispose() { WakelockPlus.disable(); - ScreenBrightness().resetApplicationScreenBrightness(); + if (!kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS)) { + ScreenBrightness().resetApplicationScreenBrightness(); + } SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge, overlays: []); SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( statusBarColor: Colors.transparent, diff --git a/lib/screens/video_player/components/video_player_next_wrapper.dart b/lib/screens/video_player/components/video_player_next_wrapper.dart index c3f31eb27..2f5290804 100644 --- a/lib/screens/video_player/components/video_player_next_wrapper.dart +++ b/lib/screens/video_player/components/video_player_next_wrapper.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -129,7 +130,10 @@ class _VideoPlayerNextWrapperState extends ConsumerState Future clearOverlaySettings() async { if (AdaptiveLayout.inputDeviceOf(context) != InputDevice.pointer) { - ScreenBrightness().resetApplicationScreenBrightness(); + if (!kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS)) { + ScreenBrightness().resetApplicationScreenBrightness(); + } } else { fullScreenHelper.closeFullScreen(ref); } diff --git a/lib/screens/video_player/tv_player_controls.dart b/lib/screens/video_player/tv_player_controls.dart index 205b36629..2b84bf537 100644 --- a/lib/screens/video_player/tv_player_controls.dart +++ b/lib/screens/video_player/tv_player_controls.dart @@ -644,7 +644,10 @@ class _TvPlayerControlsState extends ConsumerState { Future clearOverlaySettings() async { toggleOverlay(value: true); if (initInputDevice != InputDevice.pointer) { - ScreenBrightness().resetApplicationScreenBrightness(); + if (!kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS)) { + ScreenBrightness().resetApplicationScreenBrightness(); + } } else { disableFullScreen(); } diff --git a/lib/screens/video_player/video_player_controls.dart b/lib/screens/video_player/video_player_controls.dart index 03c332693..20f5ed8b4 100644 --- a/lib/screens/video_player/video_player_controls.dart +++ b/lib/screens/video_player/video_player_controls.dart @@ -717,7 +717,10 @@ class _DesktopControlsState extends ConsumerState { Future clearOverlaySettings() async { toggleOverlay(value: true); if (initInputDevice != InputDevice.pointer) { - ScreenBrightness().resetApplicationScreenBrightness(); + if (!kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS)) { + ScreenBrightness().resetApplicationScreenBrightness(); + } } else { disableFullScreen(); }