[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
class ClientSettingsModel with _$ClientSettingsModel {
const ClientSettingsModel._();
factory ClientSettingsModel({
String? syncPath,
@Default(Vector2(x: 0, y: 0)) Vector2 position,
@ -33,6 +34,14 @@ class ClientSettingsModel with _$ClientSettingsModel {
}) = _ClientSettingsModel;
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?> {

View file

@ -294,9 +294,8 @@ class __$$ClientSettingsModelImplCopyWithImpl<$Res>
/// @nodoc
@JsonSerializable()
class _$ClientSettingsModelImpl
with DiagnosticableTreeMixin
implements _ClientSettingsModel {
class _$ClientSettingsModelImpl extends _ClientSettingsModel
with DiagnosticableTreeMixin {
_$ClientSettingsModelImpl(
{this.syncPath,
this.position = const Vector2(x: 0, y: 0),
@ -313,7 +312,8 @@ class _$ClientSettingsModelImpl
this.posterSize = 1.0,
this.pinchPosterZoom = false,
this.mouseDragSupport = false,
this.libraryPageSize});
this.libraryPageSize})
: super._();
factory _$ClientSettingsModelImpl.fromJson(Map<String, dynamic> json) =>
_$$ClientSettingsModelImplFromJson(json);
@ -464,7 +464,7 @@ class _$ClientSettingsModelImpl
}
}
abstract class _ClientSettingsModel implements ClientSettingsModel {
abstract class _ClientSettingsModel extends ClientSettingsModel {
factory _ClientSettingsModel(
{final String? syncPath,
final Vector2 position,
@ -482,6 +482,7 @@ abstract class _ClientSettingsModel implements ClientSettingsModel {
final bool pinchPosterZoom,
final bool mouseDragSupport,
final int? libraryPageSize}) = _$ClientSettingsModelImpl;
_ClientSettingsModel._() : super._();
factory _ClientSettingsModel.fromJson(Map<String, dynamic> json) =
_$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/media_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/video_player_provider.dart';
import 'package:fladder/screens/shared/default_titlebar.dart';
@ -52,6 +53,11 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
} else {
disableFullscreen();
}
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarIconBrightness: ref.read(clientSettingsProvider.select((value) => value.statusBarBrightness(context))),
));
timer.cancel();
}
@ -606,6 +612,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.light,
systemNavigationBarDividerColor: Colors.transparent,
));
}

View file

@ -1,9 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.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/routes/auto_router.gr.dart';
import 'package:fladder/screens/shared/animated_fade_size.dart';
@ -48,6 +50,17 @@ class _NavigationBodyState extends ConsumerState<NavigationBody> {
@override
Widget build(BuildContext context) {
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)) {
LayoutState.phone => MediaQuery.removePadding(
context: widget.parentContext,