feat:更新统计模块

This commit is contained in:
2025-07-28 16:22:52 +08:00
parent 34780651a8
commit 8923d9e63a
9 changed files with 555 additions and 214 deletions

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:food_hub_app/models/stats.dart';
class StatisticCard extends StatelessWidget {
final IconData icon;
@@ -25,13 +26,14 @@ class StatisticCard extends StatelessWidget {
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: 60,
height: 60,
child: Icon(icon, color: color, size: 42),
width: 40,
height: 40,
child: Icon(icon, color: color, size: 40),
),
const SizedBox(width: 16),
const SizedBox(width: 10),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
@@ -56,3 +58,58 @@ class StatisticCard extends StatelessWidget {
);
}
}
// 获取排名对应的颜色
Color _getRankColor(int index) {
switch (index) {
case 0: // 第1名
return Colors.amber; // 金色
case 1: // 第2名
return Colors.grey; // 银色
case 2: // 第3名
return Colors.orange[700]!; // 铜色
default:
return Colors.black; // 普通颜色
}
}
Widget rankChart(List<ChartData> items) {
return ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
final item = items[index];
final rank = index + 1;
return SizedBox(
height: 35,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Container(
width: 25,
alignment: Alignment.center,
child: Text(
'$rank.',
style: TextStyle(
fontWeight: FontWeight.bold,
color: _getRankColor(index),
),
),
),
Text(
item.name,
style: TextStyle(color: _getRankColor(index)),
),
],
),
Text(
'${item.value.toStringAsFixed(0)}',
style: TextStyle(color: _getRankColor(index)),
),
],
),
);
},
);
}