import 'package:flutter/material.dart';
import '../core/localization/app_localizations.dart';
import '../services/favorites_service.dart';
enum FavoriteKind { poi, tour }
class FavoriteToggleButton extends StatefulWidget {
const FavoriteToggleButton({
super.key,
required this.kind,
required this.id,
});
final FavoriteKind kind;
final String id;
@override
State<FavoriteToggleButton> createState() => _FavoriteToggleButtonState();
}
class _FavoriteToggleButtonState extends State<FavoriteToggleButton> {
bool? _favorite;
@override
void initState() {
super.initState();
_load();
}
Future<void> _load() async {
final value = widget.kind == FavoriteKind.poi
? await FavoritesService.isPoiFavorite(widget.id)
: await FavoritesService.isTourFavorite(widget.id);
if (mounted) setState(() => _favorite = value);
}
Future<void> _toggle() async {
final value = widget.kind == FavoriteKind.poi
? await FavoritesService.togglePoi(widget.id)
: await FavoritesService.toggleTour(widget.id);
if (mounted) setState(() => _favorite = value);
}
@override
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context);
final favorite = _favorite ?? false;
return IconButton(
tooltip: l10n.t(favorite ? 'removeFavorite' : 'addFavorite'),
onPressed: _favorite == null ? null : _toggle,
icon: AnimatedSwitcher(
duration: const Duration(milliseconds: 180),
transitionBuilder: (child, animation) =>
ScaleTransition(scale: animation, child: child),
child: Icon(
favorite ? Icons.favorite_rounded : Icons.favorite_border_rounded,
key: ValueKey(favorite),
),
),
);
}
}

