Files
fforte/lib/screens/addCam/widgets/status.dart

74 lines
2.1 KiB
Dart

// * Widget for selecting camera trap status
// * Features:
// * - Radio button selection between active and inactive
// * - Localized status labels
// * - Default selection support
import 'package:flutter/material.dart';
import 'package:fforte/l10n/app_localizations.dart';
/// Widget for selecting the operational status of a camera trap
/// Allows toggling between active and inactive states
class Status extends StatefulWidget {
/// Callback function when status selection changes
final Function(String) onStatusChanged;
/// Initial status selection ('Aktiv' by default)
final String initialStatus;
const Status(
{super.key, required this.onStatusChanged, this.initialStatus = 'Aktiv'});
@override
State<Status> createState() => _StatusState();
}
/// State class for the status selection widget
class _StatusState extends State<Status> {
/// Currently selected status
String? _selectedStatus;
@override
void initState() {
super.initState();
_selectedStatus = widget.initialStatus;
}
@override
Widget build(BuildContext context) {
return Column(
children: [
// Active status option
ListTile(
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.aktiv),
leading: Radio<String>(
value: 'aktiv',
groupValue: _selectedStatus,
onChanged: (value) {
setState(() {
_selectedStatus = value;
widget.onStatusChanged(value!);
});
},
),
),
// Inactive status option
ListTile(
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.inaktiv),
leading: Radio<String>(
value: 'inaktiv',
groupValue: _selectedStatus,
onChanged: (value) {
setState(() {
_selectedStatus = value;
widget.onStatusChanged(value!);
});
},
),
),
],
);
}
}