44 lines
1.4 KiB
Dart
44 lines
1.4 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
|||
|
|
import 'package:lucide_icons/lucide_icons.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,
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
}
|