mirror of
https://github.com/Dr-Blank/Vaani.git
synced 2026-04-17 19:59:37 +00:00
refactor(accessibility): simplify label handling
This commit is contained in:
parent
53f58aeb8b
commit
72333b7794
2 changed files with 31 additions and 11 deletions
|
|
@ -15,6 +15,8 @@ import 'package:vaani/shared/extensions/duration_format.dart';
|
||||||
class SleepTimerButton extends HookConsumerWidget {
|
class SleepTimerButton extends HookConsumerWidget {
|
||||||
const SleepTimerButton({super.key});
|
const SleepTimerButton({super.key});
|
||||||
|
|
||||||
|
static const _sleepTimerLabel = 'Sleep timer';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final sleepTimer = ref.watch(sleepTimerProvider);
|
final sleepTimer = ref.watch(sleepTimerProvider);
|
||||||
|
|
@ -23,10 +25,10 @@ class SleepTimerButton extends HookConsumerWidget {
|
||||||
// if sleep timer is not active, show the button with the sleep timer icon
|
// if sleep timer is not active, show the button with the sleep timer icon
|
||||||
// if the sleep timer is active, show the remaining time in a pill shaped container
|
// if the sleep timer is active, show the remaining time in a pill shaped container
|
||||||
return Tooltip(
|
return Tooltip(
|
||||||
message: 'Sleep Timer',
|
message: _sleepTimerLabel,
|
||||||
child: Semantics(
|
child: Semantics(
|
||||||
button: true,
|
button: true,
|
||||||
label: 'Sleep timer',
|
label: _sleepTimerLabel,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
appLogger.fine('Sleep Timer button pressed');
|
appLogger.fine('Sleep Timer button pressed');
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,27 @@ class _BookOnShelfPlayButton extends HookConsumerWidget {
|
||||||
/// the id of the library item of the book
|
/// the id of the library item of the book
|
||||||
final String libraryItemId;
|
final String libraryItemId;
|
||||||
|
|
||||||
|
String getPlayTooltip({
|
||||||
|
required bool isCurrentBookSetInPlayer,
|
||||||
|
required bool isPlayingThisBook,
|
||||||
|
required bool isBookCompleted,
|
||||||
|
required bool hasProgress,
|
||||||
|
}) {
|
||||||
|
if (isCurrentBookSetInPlayer) {
|
||||||
|
return isPlayingThisBook ? 'Pause' : 'Resume';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isBookCompleted) {
|
||||||
|
return 'Listen again';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasProgress) {
|
||||||
|
return 'Continue listening';
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'Start listening';
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final me = ref.watch(meProvider);
|
final me = ref.watch(meProvider);
|
||||||
|
|
@ -218,15 +239,12 @@ class _BookOnShelfPlayButton extends HookConsumerWidget {
|
||||||
(element) => element.libraryItemId == libraryItemId,
|
(element) => element.libraryItemId == libraryItemId,
|
||||||
);
|
);
|
||||||
final isBookCompleted = userProgress?.isFinished ?? false;
|
final isBookCompleted = userProgress?.isFinished ?? false;
|
||||||
final playTooltip = isCurrentBookSetInPlayer
|
final playTooltip = getPlayTooltip(
|
||||||
? isPlayingThisBook
|
isCurrentBookSetInPlayer: isCurrentBookSetInPlayer,
|
||||||
? 'Pause'
|
isPlayingThisBook: isPlayingThisBook,
|
||||||
: 'Resume'
|
isBookCompleted: isBookCompleted,
|
||||||
: isBookCompleted
|
hasProgress: userProgress?.progress != null,
|
||||||
? 'Listen again'
|
);
|
||||||
: userProgress?.progress != null
|
|
||||||
? 'Continue listening'
|
|
||||||
: 'Start listening';
|
|
||||||
|
|
||||||
const size = 40.0;
|
const size = 40.0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue