96 lines
2.6 KiB
Dart
Raw Permalink Normal View History

2025-07-23 15:02:40 +04:00
import 'package:flutter/material.dart';
import 'package:my_attendance/services/settings_service.dart';
import 'package:provider/provider.dart';
class SettingsDialog extends StatefulWidget {
const SettingsDialog({super.key});
@override
State<SettingsDialog> createState() => _SettingsDialogState();
}
class _SettingsDialogState extends State<SettingsDialog> {
late final TextEditingController _hoursController;
late final TextEditingController _minutesController;
@override
void initState() {
super.initState();
final settingsService = Provider.of<SettingsService>(
context,
listen: false,
);
final currentDuration = settingsService.settings.dailyWorkDuration;
_hoursController = TextEditingController(
text: currentDuration.inHours.toString(),
);
_minutesController = TextEditingController(
text: currentDuration.inMinutes.remainder(60).toString(),
);
}
@override
void dispose() {
_hoursController.dispose();
_minutesController.dispose();
super.dispose();
}
void _save() {
final hours = int.tryParse(_hoursController.text) ?? 0;
final minutes = int.tryParse(_minutesController.text) ?? 0;
final newDuration = Duration(hours: hours, minutes: minutes);
Provider.of<SettingsService>(
context,
listen: false,
).saveWorkDuration(newDuration);
Navigator.of(context).pop();
}
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const Text('Set Daily Work Hours'),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
Expanded(
child: TextField(
controller: _hoursController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: 'Hours',
border: OutlineInputBorder(),
),
),
),
const SizedBox(width: 16),
Expanded(
child: TextField(
controller: _minutesController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: 'Minutes',
border: OutlineInputBorder(),
),
),
),
],
),
],
),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(),
child: const Text('Cancel'),
),
ElevatedButton(onPressed: _save, child: const Text('Save')),
],
);
}
}