Files
pluv 22715f7247 feat: manage, account and help pages
- 管理页:单元集 / 计划 / 算法三个维度,卡片带元数据
- 账户页:资料、学习数据、竖直分组的四个功能入口
- 新增设置、文档与帮助(底部可上滑助手)、反馈、关于四个页面
- 抽出 StatBlock 与 GroupedListSection 共用组件
- 关闭 Android 预测式返回,转场改为 M3 水平滑入
2026-10-24 15:21:30 +08:00

62 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
/// 「标签 + 大数字 +(可选)单位」的组合,学习页与账户页共用。
class StatBlock extends StatelessWidget {
const StatBlock({
required this.label,
required this.value,
this.unit,
super.key,
});
final String label;
final String value;
final String? unit;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
final ColorScheme colors = theme.colorScheme;
final String? unit = this.unit;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
label,
style: theme.textTheme.bodyMedium?.copyWith(
color: colors.onSurfaceVariant,
),
),
const SizedBox(height: 2),
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[
Flexible(
child: Text(
value,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: theme.textTheme.displaySmall?.copyWith(
fontWeight: FontWeight.w700,
height: 1.1,
),
),
),
if (unit != null) ...<Widget>[
const SizedBox(width: 6),
Text(
unit,
style: theme.textTheme.bodySmall?.copyWith(
color: colors.onSurfaceVariant,
),
),
],
],
),
],
);
}
}