feat: get cards from backend
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// نشانِ رتبه (برنز/نقره/طلا/الماس/پادشاه) با رنگ و برچسبِ فارسی.
|
||||
class RankBadge extends StatelessWidget {
|
||||
final String tier; // bronze..king
|
||||
final int? points; // در صورت نمایش امتیاز
|
||||
final double size;
|
||||
const RankBadge({super.key, required this.tier, this.points, this.size = 16});
|
||||
|
||||
static const _tiers = {
|
||||
'bronze': ('برنز', [Color(0xFFCD7F32), Color(0xFF8C5A2B)]),
|
||||
'silver': ('نقره', [Color(0xFFBFC6CC), Color(0xFF8A949B)]),
|
||||
'gold': ('طلا', [Color(0xFFFFD54F), Color(0xFFB8860B)]),
|
||||
'diamond': ('الماس', [Color(0xFF5BE0E6), Color(0xFF1E8A99)]),
|
||||
'king': ('پادشاه', [Color(0xFFB388FF), Color(0xFF6A1B9A)]),
|
||||
};
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final t = _tiers[tier] ?? _tiers['bronze']!;
|
||||
final label = t.$1;
|
||||
final colors = t.$2;
|
||||
return Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: size * 0.6, vertical: size * 0.25),
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(colors: colors),
|
||||
borderRadius: BorderRadius.circular(size),
|
||||
boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 4)],
|
||||
),
|
||||
child: Row(mainAxisSize: MainAxisSize.min, children: [
|
||||
Image.asset(
|
||||
'assets/images/badge/$tier.png',
|
||||
width: size * 1.5,
|
||||
height: size * 1.5,
|
||||
errorBuilder: (_, __, ___) =>
|
||||
Icon(Icons.military_tech, color: Colors.white, size: size * 1.1),
|
||||
),
|
||||
SizedBox(width: size * 0.3),
|
||||
Text(
|
||||
points == null ? label : '$label · $points',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: size * 0.85,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
]),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user