45 lines
1.4 KiB
Dart
45 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:lucide_icons/lucide_icons.dart';
|
||
import 'package:flutter/services.dart';
|
||
|
||
// Riveアニメーション用のウィジェット(v1.2: フォールバックモード)
|
||
// 注意: .rivファイルが存在しないため、現在はLucideIconsで表示されます
|
||
// TODO: assets/rive/munyun_heart.riv を配置すればアニメーション有効化
|
||
class MunyunLikeButton extends StatefulWidget {
|
||
final bool isLiked;
|
||
final VoidCallback onTap;
|
||
final double size;
|
||
|
||
const MunyunLikeButton({
|
||
super.key,
|
||
required this.isLiked,
|
||
required this.onTap,
|
||
this.size = 24.0,
|
||
});
|
||
|
||
@override
|
||
State<MunyunLikeButton> createState() => _MunyunLikeButtonState();
|
||
}
|
||
|
||
class _MunyunLikeButtonState extends State<MunyunLikeButton> {
|
||
// v1.2: Riveパッケージのバージョン問題により、一旦フォールバックのみで実装
|
||
// .rivファイルの配置 + Riveパッケージ更新後に再度実装予定
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
// 現在はフォールバック表示のみ
|
||
return _buildFallback();
|
||
}
|
||
|
||
Widget _buildFallback() {
|
||
return IconButton(
|
||
icon: Icon(
|
||
LucideIcons.heart, // Lucideには塗りつぶしハートがないため、色で区別
|
||
),
|
||
color: widget.isLiked ? Colors.pink : Colors.white,
|
||
tooltip: 'お気に入り',
|
||
onPressed: widget.onTap,
|
||
);
|
||
}
|
||
}
|