Vaani/lib/features/player/view/widgets/player_speed_adjust_button.dart

65 lines
2.3 KiB
Dart
Raw Normal View History

2024-06-06 15:35:30 -04:00
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
2024-08-20 08:36:39 -04:00
import 'package:logging/logging.dart';
import 'package:vaani/features/per_book_settings/providers/book_settings_provider.dart';
2025-12-08 17:54:08 +08:00
import 'package:vaani/features/player/providers/abs_provider.dart';
2025-11-13 17:53:23 +08:00
import 'package:vaani/features/player/view/player_expanded.dart';
2024-08-23 04:21:46 -04:00
import 'package:vaani/features/player/view/widgets/speed_selector.dart';
import 'package:vaani/features/settings/app_settings_provider.dart';
2024-06-06 15:35:30 -04:00
2024-08-20 08:36:39 -04:00
final _logger = Logger('PlayerSpeedAdjustButton');
2024-06-06 15:35:30 -04:00
class PlayerSpeedAdjustButton extends HookConsumerWidget {
const PlayerSpeedAdjustButton({
super.key,
});
@override
Widget build(BuildContext context, WidgetRef ref) {
2025-12-12 15:38:47 +08:00
final player = ref.read(absPlayerProvider);
2025-12-08 17:54:08 +08:00
final book = ref.read(currentBookProvider);
final bookId = book?.libraryItemId ?? '_';
final bookSettings = ref.watch(bookSettingsProvider(bookId));
final appSettings = ref.watch(appSettingsProvider);
2024-06-06 15:35:30 -04:00
return TextButton(
2025-12-08 17:54:08 +08:00
child: Text('${player.speed}x'),
2024-08-20 08:36:39 -04:00
onPressed: () async {
pendingPlayerModals++;
_logger.fine('opening speed selector');
await showModalBottomSheet<bool>(
2024-06-06 15:35:30 -04:00
context: context,
barrierLabel: 'Select Speed',
builder: (context) {
return SpeedSelector(
onSpeedSelected: (speed) {
player.setSpeed(speed);
if (appSettings.playerSettings.configurePlayerForEveryBook) {
ref
.read(
bookSettingsProvider(bookId).notifier,
)
.update(
bookSettings.copyWith
.playerSettings(preferredDefaultSpeed: speed),
);
} else {
ref
.read(
appSettingsProvider.notifier,
)
.update(
appSettings.copyWith
.playerSettings(preferredDefaultSpeed: speed),
);
}
2024-06-06 15:35:30 -04:00
},
);
},
);
2024-08-20 08:36:39 -04:00
pendingPlayerModals--;
_logger.fine('Closing speed selector');
2024-06-06 15:35:30 -04:00
},
);
}
}