Files
Zakaria d0ca84d8d2
Build / Build for Android (push) Has been cancelled
Build / Build for iOS (push) Has been cancelled
redesign app phase 1
2026-05-18 14:34:41 -04:00

79 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:finamp/l10n/app_localizations.dart';
import 'package:get_it/get_it.dart';
import '../../services/music_player_background_task.dart';
import '../../services/finamp_settings_helper.dart';
class SleepTimerDialog extends StatefulWidget {
const SleepTimerDialog({Key? key}) : super(key: key);
@override
State<SleepTimerDialog> createState() => _SleepTimerDialogState();
}
class _SleepTimerDialogState extends State<SleepTimerDialog> {
final _audioHandler = GetIt.instance<MusicPlayerBackgroundTask>();
final _textController = TextEditingController(
text: (FinampSettingsHelper.finampSettings.sleepTimerSeconds ~/ 60)
.toString());
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(AppLocalizations.of(context)!.setSleepTimer),
content: Form(
key: _formKey,
child: Row(
children: [
Expanded(
child: TextFormField(
controller: _textController,
keyboardType: TextInputType.number,
textAlign: TextAlign.center,
decoration: InputDecoration(
labelText: AppLocalizations.of(context)!.minutes),
validator: (value) {
if (value == null || value.isEmpty) {
return AppLocalizations.of(context)!.required;
}
if (int.tryParse(value) == null) {
return AppLocalizations.of(context)!.invalidNumber;
}
return null;
},
onSaved: (value) {
final valueInt = int.parse(value!);
_audioHandler.setSleepTimer(Duration(minutes: valueInt));
FinampSettingsHelper.setSleepTimerSeconds(valueInt * 60);
},
),
),
],
),
),
actions: [
TextButton(
child: Text(MaterialLocalizations.of(context).cancelButtonLabel),
onPressed: () => Navigator.of(context).pop(),
),
TextButton(
child: Text(MaterialLocalizations.of(context).okButtonLabel),
onPressed: () {
if (_formKey.currentState?.validate() == true) {
_formKey.currentState!.save();
Navigator.of(context).pop();
}
},
)
],
);
}
}