[Bugfix] Fixed statusbar color lightMode

This commit is contained in:
PartyDonut 2024-10-06 19:35:57 +02:00
parent e70858eb64
commit 986893d8ac
4 changed files with 35 additions and 5 deletions

View file

@ -13,6 +13,7 @@ part 'client_settings_model.g.dart';
@freezed @freezed
class ClientSettingsModel with _$ClientSettingsModel { class ClientSettingsModel with _$ClientSettingsModel {
const ClientSettingsModel._();
factory ClientSettingsModel({ factory ClientSettingsModel({
String? syncPath, String? syncPath,
@Default(Vector2(x: 0, y: 0)) Vector2 position, @Default(Vector2(x: 0, y: 0)) Vector2 position,
@ -33,6 +34,14 @@ class ClientSettingsModel with _$ClientSettingsModel {
}) = _ClientSettingsModel; }) = _ClientSettingsModel;
factory ClientSettingsModel.fromJson(Map<String, dynamic> json) => _$ClientSettingsModelFromJson(json); factory ClientSettingsModel.fromJson(Map<String, dynamic> json) => _$ClientSettingsModelFromJson(json);
Brightness statusBarBrightness(BuildContext context) {
return switch (themeMode) {
ThemeMode.dark => Brightness.light,
ThemeMode.light => Brightness.dark,
_ => MediaQuery.of(context).platformBrightness == Brightness.dark ? Brightness.light : Brightness.dark,
};
}
} }
class LocaleConvert implements JsonConverter<Locale?, String?> { class LocaleConvert implements JsonConverter<Locale?, String?> {

View file

@ -294,9 +294,8 @@ class __$$ClientSettingsModelImplCopyWithImpl<$Res>
/// @nodoc /// @nodoc
@JsonSerializable() @JsonSerializable()
class _$ClientSettingsModelImpl class _$ClientSettingsModelImpl extends _ClientSettingsModel
with DiagnosticableTreeMixin with DiagnosticableTreeMixin {
implements _ClientSettingsModel {
_$ClientSettingsModelImpl( _$ClientSettingsModelImpl(
{this.syncPath, {this.syncPath,
this.position = const Vector2(x: 0, y: 0), this.position = const Vector2(x: 0, y: 0),
@ -313,7 +312,8 @@ class _$ClientSettingsModelImpl
this.posterSize = 1.0, this.posterSize = 1.0,
this.pinchPosterZoom = false, this.pinchPosterZoom = false,
this.mouseDragSupport = false, this.mouseDragSupport = false,
this.libraryPageSize}); this.libraryPageSize})
: super._();
factory _$ClientSettingsModelImpl.fromJson(Map<String, dynamic> json) => factory _$ClientSettingsModelImpl.fromJson(Map<String, dynamic> json) =>
_$$ClientSettingsModelImplFromJson(json); _$$ClientSettingsModelImplFromJson(json);
@ -464,7 +464,7 @@ class _$ClientSettingsModelImpl
} }
} }
abstract class _ClientSettingsModel implements ClientSettingsModel { abstract class _ClientSettingsModel extends ClientSettingsModel {
factory _ClientSettingsModel( factory _ClientSettingsModel(
{final String? syncPath, {final String? syncPath,
final Vector2 position, final Vector2 position,
@ -482,6 +482,7 @@ abstract class _ClientSettingsModel implements ClientSettingsModel {
final bool pinchPosterZoom, final bool pinchPosterZoom,
final bool mouseDragSupport, final bool mouseDragSupport,
final int? libraryPageSize}) = _$ClientSettingsModelImpl; final int? libraryPageSize}) = _$ClientSettingsModelImpl;
_ClientSettingsModel._() : super._();
factory _ClientSettingsModel.fromJson(Map<String, dynamic> json) = factory _ClientSettingsModel.fromJson(Map<String, dynamic> json) =
_$ClientSettingsModelImpl.fromJson; _$ClientSettingsModelImpl.fromJson;

View file

@ -7,6 +7,7 @@ import 'package:ficonsax/ficonsax.dart';
import 'package:fladder/models/items/intro_skip_model.dart'; import 'package:fladder/models/items/intro_skip_model.dart';
import 'package:fladder/models/media_playback_model.dart'; import 'package:fladder/models/media_playback_model.dart';
import 'package:fladder/models/playback/playback_model.dart'; import 'package:fladder/models/playback/playback_model.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart';
import 'package:fladder/providers/settings/video_player_settings_provider.dart'; import 'package:fladder/providers/settings/video_player_settings_provider.dart';
import 'package:fladder/providers/video_player_provider.dart'; import 'package:fladder/providers/video_player_provider.dart';
import 'package:fladder/screens/shared/default_titlebar.dart'; import 'package:fladder/screens/shared/default_titlebar.dart';
@ -52,6 +53,11 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
} else { } else {
disableFullscreen(); disableFullscreen();
} }
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarIconBrightness: ref.read(clientSettingsProvider.select((value) => value.statusBarBrightness(context))),
));
timer.cancel(); timer.cancel();
} }
@ -606,6 +612,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarColor: Colors.transparent, statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent, systemNavigationBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.light,
systemNavigationBarDividerColor: Colors.transparent, systemNavigationBarDividerColor: Colors.transparent,
)); ));
} }

View file

@ -1,9 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:ficonsax/ficonsax.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart';
import 'package:fladder/providers/views_provider.dart'; import 'package:fladder/providers/views_provider.dart';
import 'package:fladder/routes/auto_router.gr.dart'; import 'package:fladder/routes/auto_router.gr.dart';
import 'package:fladder/screens/shared/animated_fade_size.dart'; import 'package:fladder/screens/shared/animated_fade_size.dart';
@ -48,6 +50,17 @@ class _NavigationBodyState extends ConsumerState<NavigationBody> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final views = ref.watch(viewsProvider.select((value) => value.views)); final views = ref.watch(viewsProvider.select((value) => value.views));
ref.listen(
clientSettingsProvider,
(previous, next) {
if (previous != next) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarIconBrightness: next.statusBarBrightness(context),
));
}
},
);
return switch (AdaptiveLayout.layoutOf(context)) { return switch (AdaptiveLayout.layoutOf(context)) {
LayoutState.phone => MediaQuery.removePadding( LayoutState.phone => MediaQuery.removePadding(
context: widget.parentContext, context: widget.parentContext,