fix: resolver advertencias de analisis i18n
Build & Deploy PluriWave / Análisis de código (push) Successful in 35s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m26s

This commit is contained in:
Javier Bautista Fernández
2026-06-03 14:54:50 +02:00
parent 643ba1eb45
commit 00fe49c309
6 changed files with 16 additions and 17 deletions
+1 -1
View File
@@ -789,7 +789,7 @@ extension PluriAppLocalizationsExt on AppLocalizations {
String get alarmVacationPlay => _pick({'es':'Suena en vacaciones','en':'Plays during vacations','fr':'Sonne pendant les vacances','de':'Klingelt im Urlaub','it':'Suona durante le vacanze','pt':'Toca durante as férias','ru':'Срабатывает во время отпуска','ja':'休暇中も鳴らす','zh':'假期中响铃','ar':'يعمل أثناء الإجازات','hi':'छुट्टियों में बजेगा','bn':'ছুটির সময় বাজবে','id':'Berbunyi saat liburan'}); String get alarmVacationPlay => _pick({'es':'Suena en vacaciones','en':'Plays during vacations','fr':'Sonne pendant les vacances','de':'Klingelt im Urlaub','it':'Suona durante le vacanze','pt':'Toca durante as férias','ru':'Срабатывает во время отпуска','ja':'休暇中も鳴らす','zh':'假期中响铃','ar':'يعمل أثناء الإجازات','hi':'छुट्टियों में बजेगा','bn':'ছুটির সময় বাজবে','id':'Berbunyi saat liburan'});
String get alarmVacationPause => _pick({'es':'Pausa en vacaciones','en':'Pause during vacations','fr':'Pause pendant les vacances','de':'Im Urlaub pausieren','it':'Pausa durante le vacanze','pt':'Pausar durante as férias','ru':'Пауза во время отпуска','ja':'休暇中は一時停止','zh':'假期中暂停','ar':'إيقاف أثناء الإجازات','hi':'छुट्टियों में विराम','bn':'ছুটির সময় বিরতি','id':'Jeda saat liburan'}); String get alarmVacationPause => _pick({'es':'Pausa en vacaciones','en':'Pause during vacations','fr':'Pause pendant les vacances','de':'Im Urlaub pausieren','it':'Pausa durante le vacanze','pt':'Pausar durante as férias','ru':'Пауза во время отпуска','ja':'休暇中は一時停止','zh':'假期中暂停','ar':'إيقاف أثناء الإجازات','hi':'छुट्टियों में विराम','bn':'ছুটির সময় বিরতি','id':'Jeda saat liburan'});
String fadeInSeconds(int seconds) => _pick({'es':'Fade-in ${seconds}s','en':'Fade-in ${seconds}s','fr':'Fondu entrant ${seconds}s','de':'Fade-in ${seconds}s','it':'Fade-in ${seconds}s','pt':'Fade-in ${seconds}s','ru':'Плавное начало ${seconds} с','ja':'フェードイン ${seconds}','zh':'淡入 ${seconds}','ar':'تدرّج صوتي ${seconds} ث','hi':'फ़ेड-इन ${seconds} सेकंड','bn':'ফেড-ইন ${seconds} সেকেন্ড','id':'Fade-in ${seconds} dtk'}); String fadeInSeconds(int seconds) => _pick({'es':'Fade-in $seconds s','en':'Fade-in $seconds s','fr':'Fondu entrant $seconds s','de':'Fade-in $seconds s','it':'Fade-in $seconds s','pt':'Fade-in $seconds s','ru':'Плавное начало $seconds с','ja':'フェードイン $seconds ','zh':'淡入 $seconds','ar':'تدرّج صوتي $seconds ث','hi':'फ़ेड-इन $seconds सेकंड','bn':'ফেড-ইন $seconds সেকেন্ড','id':'Fade-in $seconds dtk'});
String alarmNextExecution(String date) => _pick({'es':'Siguiente ejecución: $date','en':'Next occurrence: $date','fr':'Prochaine exécution : $date','de':'Nächste Ausführung: $date','it':'Prossima esecuzione: $date','pt':'Próxima execução: $date','ru':'Следующий запуск: $date','ja':'次回実行: $date','zh':'下次执行:$date','ar':'التشغيل التالي: $date','hi':'अगली घंटी: $date','bn':'পরবর্তী সময়: $date','id':'Jadwal berikutnya: $date'}); String alarmNextExecution(String date) => _pick({'es':'Siguiente ejecución: $date','en':'Next occurrence: $date','fr':'Prochaine exécution : $date','de':'Nächste Ausführung: $date','it':'Prossima esecuzione: $date','pt':'Próxima execução: $date','ru':'Следующий запуск: $date','ja':'次回実行: $date','zh':'下次执行:$date','ar':'التشغيل التالي: $date','hi':'अगली घंटी: $date','bn':'পরবর্তী সময়: $date','id':'Jadwal berikutnya: $date'});
String get alarmNoNextExecution => _pick({'es':'No tiene próxima ejecución activa.','en':'No active next occurrence.','fr':'Aucune prochaine exécution active.','de':'Keine aktive nächste Ausführung.','it':'Nessuna prossima esecuzione attiva.','pt':'Não há próxima execução ativa.','ru':'Нет активного следующего запуска.','ja':'有効な次回実行はありません。','zh':'没有活动的下次执行。','ar':'لا يوجد تشغيل تالٍ نشط.','hi':'कोई सक्रिय अगली घंटी नहीं है।','bn':'কোনও সক্রিয় পরবর্তী সময় নেই।','id':'Tidak ada jadwal berikutnya yang aktif.'}); String get alarmNoNextExecution => _pick({'es':'No tiene próxima ejecución activa.','en':'No active next occurrence.','fr':'Aucune prochaine exécution active.','de':'Keine aktive nächste Ausführung.','it':'Nessuna prossima esecuzione attiva.','pt':'Não há próxima execução ativa.','ru':'Нет активного следующего запуска.','ja':'有効な次回実行はありません。','zh':'没有活动的下次执行。','ar':'لا يوجد تشغيل تالٍ نشط.','hi':'कोई सक्रिय अगली घंटी नहीं है।','bn':'কোনও সক্রিয় পরবর্তী সময় নেই।','id':'Tidak ada jadwal berikutnya yang aktif.'});
String alarmSkippedExecution(String date) => _pick({'es':'Una ejecución fue omitida: $date.','en':'One occurrence was skipped: $date.','fr':'Une exécution a été ignorée : $date.','de':'Eine Ausführung wurde übersprungen: $date.','it':'Unesecuzione è stata saltata: $date.','pt':'Uma execução foi ignorada: $date.','ru':'Один запуск был пропущен: $date.','ja':'1回の実行をスキップしました: $date','zh':'已跳过一次执行:$date','ar':'تم تخطي تشغيل واحد: $date.','hi':'एक घंटी छोड़ी गई: $date','bn':'একটি সময় বাদ দেওয়া হয়েছে: $date','id':'Satu jadwal dilewati: $date.'}); String alarmSkippedExecution(String date) => _pick({'es':'Una ejecución fue omitida: $date.','en':'One occurrence was skipped: $date.','fr':'Une exécution a été ignorée : $date.','de':'Eine Ausführung wurde übersprungen: $date.','it':'Unesecuzione è stata saltata: $date.','pt':'Uma execução foi ignorada: $date.','ru':'Один запуск был пропущен: $date.','ja':'1回の実行をスキップしました: $date','zh':'已跳过一次执行:$date','ar':'تم تخطي تشغيل واحد: $date.','hi':'एक घंटी छोड़ी गई: $date','bn':'একটি সময় বাদ দেওয়া হয়েছে: $date','id':'Satu jadwal dilewati: $date.'});
+2 -2
View File
@@ -159,8 +159,8 @@ class AlarmaMusical {
sonarEnVacaciones: json['sonarEnVacaciones'] as bool? ?? true, sonarEnVacaciones: json['sonarEnVacaciones'] as bool? ?? true,
snoozeMinutos: json['snoozeMinutos'] as int? ?? 5, snoozeMinutos: json['snoozeMinutos'] as int? ?? 5,
volumen: (json['volumen'] as num?)?.toDouble() ?? 0.85, volumen: (json['volumen'] as num?)?.toDouble() ?? 0.85,
fadeInSegundos: ((json['fadeInSegundos'] as int? ?? 0).clamp(0, 60)) fadeInSegundos:
as int, (json['fadeInSegundos'] as int? ?? 0).clamp(0, 60).toInt(),
sonidoInterno: _enumFromName( sonidoInterno: _enumFromName(
SonidoInternoAlarma.values, SonidoInternoAlarma.values,
json['sonidoInterno'] as String?, json['sonidoInterno'] as String?,
+7 -7
View File
@@ -1161,6 +1161,7 @@ class _SeccionBackup extends StatelessWidget {
const _SeccionBackup(); const _SeccionBackup();
Future<void> _exportar(BuildContext context) async { Future<void> _exportar(BuildContext context) async {
final l10n = AppLocalizations.of(context);
try { try {
final estado = context.read<EstadoRadio>(); final estado = context.read<EstadoRadio>();
final config = await estado.exportarConfig(); final config = await estado.exportarConfig();
@@ -1172,17 +1173,15 @@ class _SeccionBackup extends StatelessWidget {
await Share.shareXFiles( await Share.shareXFiles(
[XFile(file.path)], [XFile(file.path)],
subject: AppLocalizations.of(context).backupShareSubject, subject: l10n.backupShareSubject,
text: AppLocalizations.of( text: l10n.backupShareText(DateTime.now().toLocal()),
context,
).backupShareText(DateTime.now().toLocal()),
); );
} catch (e) { } catch (e) {
if (context.mounted) { if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar( SnackBar(
content: Text( content: Text(
AppLocalizations.of(context).backupExportError(e.toString()), l10n.backupExportError(e.toString()),
), ),
), ),
); );
@@ -1191,6 +1190,7 @@ class _SeccionBackup extends StatelessWidget {
} }
Future<void> _importar(BuildContext context) async { Future<void> _importar(BuildContext context) async {
final l10n = AppLocalizations.of(context);
try { try {
final result = await FilePicker.platform.pickFiles( final result = await FilePicker.platform.pickFiles(
type: FileType.custom, type: FileType.custom,
@@ -1230,7 +1230,7 @@ class _SeccionBackup extends StatelessWidget {
await estado.importarConfig(json); await estado.importarConfig(json);
messenger.showSnackBar( messenger.showSnackBar(
SnackBar( SnackBar(
content: Text(AppLocalizations.of(context).backupImportSuccess), content: Text(l10n.backupImportSuccess),
), ),
); );
} }
@@ -1240,7 +1240,7 @@ class _SeccionBackup extends StatelessWidget {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar( SnackBar(
content: Text( content: Text(
AppLocalizations.of(context).backupImportError(e.toString()), l10n.backupImportError(e.toString()),
), ),
), ),
); );
+2 -2
View File
@@ -367,7 +367,7 @@ class _EditorAlarmaSheetState extends State<_EditorAlarmaSheet> {
_tipo = alarma?.tipoProgramacion ?? TipoProgramacionAlarma.unica; _tipo = alarma?.tipoProgramacion ?? TipoProgramacionAlarma.unica;
_diasSemana = {...alarma?.diasSemana ?? const <int>[]}; _diasSemana = {...alarma?.diasSemana ?? const <int>[]};
_volumen = alarma?.volumen ?? 0.85; _volumen = alarma?.volumen ?? 0.85;
_fadeInSegundos = ((alarma?.fadeInSegundos ?? 0).clamp(0, 60)) as int; _fadeInSegundos = (alarma?.fadeInSegundos ?? 0).clamp(0, 60).toInt();
_sonarEnVacaciones = alarma?.sonarEnVacaciones ?? true; _sonarEnVacaciones = alarma?.sonarEnVacaciones ?? true;
_sonidoInterno = alarma?.sonidoInterno ?? SonidoInternoAlarma.amanecer; _sonidoInterno = alarma?.sonidoInterno ?? SonidoInternoAlarma.amanecer;
_emisora = alarma?.emisora ?? context.read<EstadoRadio>().emisoraPreferida; _emisora = alarma?.emisora ?? context.read<EstadoRadio>().emisoraPreferida;
@@ -681,7 +681,7 @@ class _EditorAlarmaSheetState extends State<_EditorAlarmaSheet> {
sonarEnVacaciones: _sonarEnVacaciones, sonarEnVacaciones: _sonarEnVacaciones,
snoozeMinutos: existente?.snoozeMinutos ?? 5, snoozeMinutos: existente?.snoozeMinutos ?? 5,
volumen: _volumen, volumen: _volumen,
fadeInSegundos: _fadeInSegundos.clamp(0, 60), fadeInSegundos: _fadeInSegundos.clamp(0, 60).toInt(),
sonidoInterno: _sonidoInterno, sonidoInterno: _sonidoInterno,
activa: true, activa: true,
); );
-1
View File
@@ -3,7 +3,6 @@ import 'package:flutter_animate/flutter_animate.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../estado/estado_radio.dart'; import '../estado/estado_radio.dart';
import '../l10n/app_localizations_ext.dart';
import '../l10n/gen/app_localizations.dart'; import '../l10n/gen/app_localizations.dart';
import '../widgets/pluri_glass_surface.dart'; import '../widgets/pluri_glass_surface.dart';
import '../widgets/pluri_icon.dart'; import '../widgets/pluri_icon.dart';
+2 -2
View File
@@ -553,7 +553,7 @@ class _GrabacionWidget extends StatelessWidget {
actions: [ actions: [
TextButton( TextButton(
onPressed: () => Navigator.pop(ctx), onPressed: () => Navigator.pop(ctx),
child: Text(AppLocalizations.of(ctx).cancelAction), child: Text(AppLocalizations.of(context).cancelAction),
), ),
FilledButton( FilledButton(
onPressed: () { onPressed: () {
@@ -803,7 +803,7 @@ class _TimerWidget extends StatelessWidget {
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
), ),
child: Text(AppLocalizations.of(ctx).cancelAction), child: Text(AppLocalizations.of(context).cancelAction),
), ),
], ],
); );