This commit is contained in:
horoli
2026-02-04 01:44:38 +09:00
parent e020e44d8f
commit 3b9fa47f0a
7 changed files with 126 additions and 100 deletions
+59 -37
View File
@@ -24,7 +24,7 @@ class ItemCardWidget extends StatelessWidget {
onTap: onTap,
child: Card(
color: ThemeConfig.shopItemCardBg, // Configurable if needed
shape: item.rarity != ItemRarity.magic
shape: item.rarity != ItemRarity.normal
? RoundedRectangleBorder(
side: BorderSide(
color: ItemUtils.getRarityColor(item.rarity),
@@ -33,44 +33,66 @@ class ItemCardWidget extends StatelessWidget {
borderRadius: BorderRadius.circular(8.0),
)
: null,
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
child: Image.asset(
ItemUtils.getIconPath(item.slot),
fit: BoxFit.contain,
child: Stack(
fit: StackFit.expand,
children: [
// Background Watermark/Silhouette Icon (Top-Left)
Positioned(
left: 8,
top: 8,
child: Image.asset(
ItemUtils.getIconPath(item.slot),
width: 32,
height: 32,
fit: BoxFit.contain,
color: Colors.black12, // Shadow silhouette
),
),
// Main Content (Centered)
Center(
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 12),
Text(
item.name,
maxLines: 1,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontWeight: FontWeight.bold,
color: ItemUtils.getRarityColor(item.rarity),
fontSize: 12,
),
),
const SizedBox(height: 4),
// Show Item Stats
FittedBox(
fit: BoxFit.scaleDown,
child: _buildItemStatText(item),
),
if (showPrice) ...[
const SizedBox(height: 4),
Text(
"${item.price} G",
textAlign: TextAlign.center,
style: TextStyle(
color: canBuy
? ThemeConfig.statGoldColor
: ThemeConfig.textColorGrey,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
],
],
),
),
Text(
item.name,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontWeight: FontWeight.bold,
color: ItemUtils.getRarityColor(item.rarity),
fontSize: 12,
),
),
// Show Item Stats (Fixed to show negative values)
FittedBox(fit: BoxFit.scaleDown, child: _buildItemStatText(item)),
if (showPrice) ...[
const Spacer(),
Text(
"${item.price} G",
style: TextStyle(
color: canBuy
? ThemeConfig.statGoldColor
: ThemeConfig.textColorGrey,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
],
],
),
),
],
),
),
);