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

76 lines
2.1 KiB
Dart

// * Widget for selecting camera trap media type
// * Provides radio button selection between:
// * - Photo mode
// * - Film/Video mode
// * Includes localization support
import 'package:flutter/material.dart';
import 'package:fforte/l10n/app_localizations.dart';
/// Widget for selecting between photo and film/video mode
/// Uses radio buttons for selection with localized labels
class FotoFilm extends StatefulWidget {
/// Callback function when media type selection changes
final Function(String) onFotoFilmChanged;
/// Initial media type selection ('foto' by default)
final String initialFotoFilm;
const FotoFilm(
{super.key,
required this.onFotoFilmChanged,
this.initialFotoFilm = 'foto'});
@override
State<FotoFilm> createState() => _FotoFilmState();
}
/// State class for the photo/film selection widget
class _FotoFilmState extends State<FotoFilm> {
/// Currently selected media type
String? _selectedFotoFilm;
@override
void initState() {
super.initState();
_selectedFotoFilm = widget.initialFotoFilm;
}
@override
Widget build(BuildContext context) {
return Column(
children: [
// Photo mode radio button
ListTile(
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.foto),
leading: Radio<String>(
value: 'Foto',
groupValue: _selectedFotoFilm,
onChanged: (value) {
setState(() {
_selectedFotoFilm = value;
widget.onFotoFilmChanged(value!);
});
},
),
),
// Film/Video mode radio button
ListTile(
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.film),
leading: Radio<String>(
value: 'Film',
groupValue: _selectedFotoFilm,
onChanged: (value) {
setState(() {
_selectedFotoFilm = value;
widget.onFotoFilmChanged(value!);
});
},
),
),
],
);
}
}