格式化代码

This commit is contained in:
rang 2025-10-25 10:38:56 +08:00
parent a28547685b
commit b3a9d76c78
24 changed files with 611 additions and 451 deletions

View file

@ -18,11 +18,13 @@ class AppSettings with _$AppSettings {
@Default(SleepTimerSettings()) SleepTimerSettings sleepTimerSettings,
@Default(DownloadSettings()) DownloadSettings downloadSettings,
@Default(NotificationSettings()) NotificationSettings notificationSettings,
@Default(ShakeDetectionSettings()) ShakeDetectionSettings shakeDetectionSettings,
@Default(ShakeDetectionSettings())
ShakeDetectionSettings shakeDetectionSettings,
@Default(HomePageSettings()) HomePageSettings homePageSettings,
}) = _AppSettings;
factory AppSettings.fromJson(Map<String, dynamic> json) => _$AppSettingsFromJson(json);
factory AppSettings.fromJson(Map<String, dynamic> json) =>
_$AppSettingsFromJson(json);
}
@freezed
@ -36,14 +38,17 @@ class ThemeSettings with _$ThemeSettings {
@Default(true) bool useCurrentPlayerThemeThroughoutApp,
}) = _ThemeSettings;
factory ThemeSettings.fromJson(Map<String, dynamic> json) => _$ThemeSettingsFromJson(json);
factory ThemeSettings.fromJson(Map<String, dynamic> json) =>
_$ThemeSettingsFromJson(json);
}
@freezed
class PlayerSettings with _$PlayerSettings {
const factory PlayerSettings({
@Default(MinimizedPlayerSettings()) MinimizedPlayerSettings miniPlayerSettings,
@Default(ExpandedPlayerSettings()) ExpandedPlayerSettings expandedPlayerSettings,
@Default(MinimizedPlayerSettings())
MinimizedPlayerSettings miniPlayerSettings,
@Default(ExpandedPlayerSettings())
ExpandedPlayerSettings expandedPlayerSettings,
@Default(1) double preferredDefaultVolume,
@Default(1) double preferredDefaultSpeed,
@Default([1, 1.25, 1.5, 1.75, 2]) List<double> speedOptions,
@ -56,7 +61,8 @@ class PlayerSettings with _$PlayerSettings {
@Default(true) bool configurePlayerForEveryBook,
}) = _PlayerSettings;
factory PlayerSettings.fromJson(Map<String, dynamic> json) => _$PlayerSettingsFromJson(json);
factory PlayerSettings.fromJson(Map<String, dynamic> json) =>
_$PlayerSettingsFromJson(json);
}
@freezed
@ -139,7 +145,8 @@ class DownloadSettings with _$DownloadSettings {
@Default(3) int maxConcurrentByGroup,
}) = _DownloadSettings;
factory DownloadSettings.fromJson(Map<String, dynamic> json) => _$DownloadSettingsFromJson(json);
factory DownloadSettings.fromJson(Map<String, dynamic> json) =>
_$DownloadSettingsFromJson(json);
}
@freezed
@ -196,7 +203,8 @@ class ShakeDetectionSettings with _$ShakeDetectionSettings {
@Default(ShakeDirection.horizontal) ShakeDirection direction,
@Default(5) double threshold,
@Default(ShakeAction.resetSleepTimer) ShakeAction shakeAction,
@Default({ShakeDetectedFeedback.vibrate}) Set<ShakeDetectedFeedback> feedback,
@Default({ShakeDetectedFeedback.vibrate})
Set<ShakeDetectedFeedback> feedback,
@Default(0.5) double beepVolume,
/// the duration to wait before the shake detection is enabled again
@ -234,5 +242,6 @@ class HomePageSettings with _$HomePageSettings {
@Default(false) bool showPlayButtonOnListenAgainShelf,
}) = _HomePageSettings;
factory HomePageSettings.fromJson(Map<String, dynamic> json) => _$HomePageSettingsFromJson(json);
factory HomePageSettings.fromJson(Map<String, dynamic> json) =>
_$HomePageSettingsFromJson(json);
}

View file

@ -128,7 +128,8 @@ class AppSettingsPage extends HookConsumerWidget {
SettingsTile(
title: Text(S.of(context).notificationMediaPlayer),
leading: const Icon(Icons.play_lesson),
description: Text(S.of(context).notificationMediaPlayerDescription),
description:
Text(S.of(context).notificationMediaPlayerDescription),
onPressed: (context) {
context.pushNamed(Routes.notificationSettings.name);
},

View file

@ -51,7 +51,8 @@ class PlayerSettingsPage extends HookConsumerWidget {
title: Text(S.of(context).playerSettingsSpeedDefault),
trailing: Text(
'${playerSettings.preferredDefaultSpeed}x',
style: TextStyle(color: primaryColor, fontWeight: FontWeight.bold),
style:
TextStyle(color: primaryColor, fontWeight: FontWeight.bold),
),
leading: const Icon(Icons.speed),
onPressed: (context) async {
@ -75,7 +76,8 @@ class PlayerSettingsPage extends HookConsumerWidget {
title: Text(S.of(context).playerSettingsSpeedOptions),
description: Text(
playerSettings.speedOptions.map((e) => '${e}x').join(', '),
style: TextStyle(fontWeight: FontWeight.bold, color: primaryColor),
style:
TextStyle(fontWeight: FontWeight.bold, color: primaryColor),
),
leading: const Icon(Icons.speed),
onPressed: (context) async {
@ -105,17 +107,22 @@ class PlayerSettingsPage extends HookConsumerWidget {
title: Text(S.of(context).playerSettingsPlaybackReportingMinimum),
description: Text.rich(
TextSpan(
text: S.of(context).playerSettingsPlaybackReportingMinimumDescriptionHead,
text: S
.of(context)
.playerSettingsPlaybackReportingMinimumDescriptionHead,
children: [
TextSpan(
text: playerSettings.minimumPositionForReporting.smartBinaryFormat,
text: playerSettings
.minimumPositionForReporting.smartBinaryFormat,
style: TextStyle(
fontWeight: FontWeight.bold,
color: primaryColor,
),
),
TextSpan(
text: S.of(context).playerSettingsPlaybackReportingMinimumDescriptionTail),
text: S
.of(context)
.playerSettingsPlaybackReportingMinimumDescriptionTail),
],
),
),
@ -125,7 +132,8 @@ class PlayerSettingsPage extends HookConsumerWidget {
context: context,
builder: (context) {
return TimeDurationSelector(
title: Text(S.of(context).playerSettingsPlaybackReportingIgnore),
title: Text(
S.of(context).playerSettingsPlaybackReportingIgnore),
baseUnit: BaseUnit.second,
initialValue: playerSettings.minimumPositionForReporting,
);
@ -148,7 +156,8 @@ class PlayerSettingsPage extends HookConsumerWidget {
text: 'Mark complete when less than ',
children: [
TextSpan(
text: playerSettings.markCompleteWhenTimeLeft.smartBinaryFormat,
text: playerSettings
.markCompleteWhenTimeLeft.smartBinaryFormat,
style: TextStyle(
fontWeight: FontWeight.bold,
color: primaryColor,
@ -187,7 +196,8 @@ class PlayerSettingsPage extends HookConsumerWidget {
text: 'Report progress every ',
children: [
TextSpan(
text: playerSettings.playbackReportInterval.smartBinaryFormat,
text: playerSettings
.playbackReportInterval.smartBinaryFormat,
style: TextStyle(
fontWeight: FontWeight.bold,
color: primaryColor,
@ -231,7 +241,8 @@ class PlayerSettingsPage extends HookConsumerWidget {
description: const Text(
'Show the total progress of the book in the player',
),
initialValue: playerSettings.expandedPlayerSettings.showTotalProgress,
initialValue:
playerSettings.expandedPlayerSettings.showTotalProgress,
onToggle: (value) {
ref.read(appSettingsProvider.notifier).update(
appSettings.copyWith.playerSettings
@ -246,11 +257,13 @@ class PlayerSettingsPage extends HookConsumerWidget {
description: const Text(
'Show the progress of the current chapter in the player',
),
initialValue: playerSettings.expandedPlayerSettings.showChapterProgress,
initialValue:
playerSettings.expandedPlayerSettings.showChapterProgress,
onToggle: (value) {
ref.read(appSettingsProvider.notifier).update(
appSettings.copyWith.playerSettings(
expandedPlayerSettings: playerSettings.expandedPlayerSettings
expandedPlayerSettings: playerSettings
.expandedPlayerSettings
.copyWith(showChapterProgress: value),
),
);
@ -309,7 +322,8 @@ class SpeedPicker extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final speedController = useTextEditingController(text: initialValue.toString());
final speedController =
useTextEditingController(text: initialValue.toString());
final speed = useState<double?>(initialValue);
return AlertDialog(
title: const Text('Select Speed'),
@ -368,7 +382,8 @@ class SpeedOptionsPicker extends HookConsumerWidget {
onDeleted: speed == 1
? null
: () {
speedOptions.value = speedOptions.value.where((element) {
speedOptions.value =
speedOptions.value.where((element) {
// speed option 1 can't be removed
return element != speed;
}).toList();