mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-10 18:07:20 +01:00
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
file-length / file length <= 250 lines (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint) (push) Waiting to run
Tests / test (push) Waiting to run
release-apk / release (APK) (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
66 lines
1.7 KiB
Dart
66 lines
1.7 KiB
Dart
/// A kcal formula shown as a glyph + number; its proper name is only the
|
|
/// glyph's spoken label.
|
|
library;
|
|
|
|
import 'package:diet_guard_app/services/activity_kcal.dart';
|
|
import 'package:diet_guard_app/ui/theme.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
/// One distinct glyph per entry of [activityFormulas].
|
|
const Map<String, IconData> formulaIcons = {
|
|
'MET': Icons.speed,
|
|
'ACSM': Icons.functions,
|
|
'Per-km': Icons.straighten,
|
|
};
|
|
|
|
/// The glyph for formula [name], spoken as the formula's proper name.
|
|
class FormulaGlyph extends StatelessWidget {
|
|
/// Creates a glyph for [name].
|
|
const FormulaGlyph(this.name, {this.size = 16, super.key});
|
|
|
|
/// The formula's proper name (a key of [formulaIcons]).
|
|
final String name;
|
|
|
|
/// Glyph size.
|
|
final double size;
|
|
|
|
// The proper name is spoken only: a tooltip paints on long-press.
|
|
@override
|
|
Widget build(BuildContext context) => Icon(
|
|
formulaIcons[name],
|
|
size: size,
|
|
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
|
semanticLabel: name,
|
|
);
|
|
}
|
|
|
|
/// Glyph + number (a trailing `~` marks a figure that reuses the MET value).
|
|
class FormulaFigure extends StatelessWidget {
|
|
/// Creates a figure.
|
|
const FormulaFigure(
|
|
this.name,
|
|
this.value, {
|
|
this.fallback = false,
|
|
super.key,
|
|
});
|
|
|
|
/// The formula's proper name.
|
|
final String name;
|
|
|
|
/// The formatted kcal number.
|
|
final String value;
|
|
|
|
/// Whether the figure is a fallback to the MET value.
|
|
final bool fallback;
|
|
|
|
@override
|
|
Widget build(BuildContext context) => Row(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
FormulaGlyph(name),
|
|
const SizedBox(width: AppSpacing.xs),
|
|
Text(fallback ? '$value~' : value),
|
|
],
|
|
);
|
|
}
|